使用local.xml更改或重新排列Magento登录和注销(顶部链接)位置

时间:2012-06-30 03:35:55

标签: xml magento hyperlink

我想使用local.xml重新排列我的热门链接 - 特别是登录/注销链接。这是否可以在不删除链接然后重新添加它们并修改其位置标记的情况下实现?

目前(默认情况下)登录和注销设置为customer.xml中的位置100:

<customer_logged_in>
    <reference name="top.links">
        <action method="addLink" translate="label title" module="customer">
            <label>Log Out</label>
            <url helper="customer/getLogoutUrl"/>
            <title>Log Out</title>
            <prepare/>
            <urlParams/>
            <position>100</position>
        </action>
    </reference>
</customer_logged_in>

<customer_logged_out>
    <reference name="top.links">
        <action method="addLink" translate="label title" module="customer">
            <label>Log In</label>
            <url helper="customer/getLoginUrl"/>
            <title>Log In</title>
            <prepare/>
            <urlParams/>
            <position>100</position>
        </action>
    </reference>
</customer_logged_out>

我希望他们都在位置1(通过local.xml)。

我知道setAttribute操作方法,但我不确定如何在这种情况下使用它。

3 个答案:

答案 0 :(得分:3)

我还没有找到一种更有效的方式在local.xml内执行此操作,因此我删除了链接并使用修改后的位置参数重新添加它们:

<customer_logged_in>
    <reference name="top.links">
        <action method="removeLinkByUrl"><url helper="customer/getLogoutUrl"/></action>
        <action method="addLink" translate="label title" module="customer">
            <label>Log Out</label>
            <url helper="customer/getLogoutUrl"/>
            <title>Log Out</title>
            <prepare/>
            <urlParams/>
            <position>4</position>
            <liParams>id="top-logout"</liParams>
            <aParams/>
        </action>
    </reference>
</customer_logged_in>

<customer_logged_out>
    <reference name="top.links">
        <action method="removeLinkByUrl"><url helper="customer/getLoginUrl"/></action>
        <action method="addLink" translate="label title" module="customer">
            <label>Log In</label>
            <url helper="customer/getLoginUrl"/>
            <title>Log In</title>
            <prepare/>
            <urlParams/>
            <position>4</position>
            <liParams>id="top-login"</liParams>
            <aParams/>
        </action>
    </reference>
</customer_logged_out>

答案 1 :(得分:1)

top.links块的addLink方法用于添加此块的链接。当您查看该方法的主体时,您将看到位置参数用于确定链接的位置。

链接位置由以下代码块决定:

 $this->_links[$this->_getNewPosition($position)] = $link;
 if (intval($position) > 0) {
     ksort($this->_links);
 }

_getNewPosition()方法检查该特定位置是否仍然可用。如果不是,那么它将搜索最接近的可用的一个(即,在位置1,只能有一个链接)。检索到链接的正确位置后,整个链接数组都会被排序。

在您的情况下,登录和注销链接的位置默认设置为100(请参阅<position />标记)。因此,您应该将布局xml(customer.xml)复制到主题的布局目录中,并将位置参数更改为1.

如果这些链接不会在位置1呈现,则意味着其他链接的位置在您的位置之前设置为1。在这种情况下,只需将该链接的位置更改为更大的数字。请注意,您不能使用小于或等于零的位置值。

答案 2 :(得分:0)

以下是Top Links的位置编号。

根据这些,您可以设置或更改顶部链接的位置

My Account = 10 
Whislist = 30 
Mycart = 50 
Checkout = 60
Login/Logout = 100