4

我想使用local.xml-- 特别是登录/注销链接重新排列我的顶级链接。如果不删除链接然后重新添加它们并修改它们的位置标签,这是否可能?

当前(默认情况下)登录和注销设置为位置 100 in customer.xml

<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操作方法,但我不确定在这种情况下如何使用它。

4

3 回答 3

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>
于 2012-07-03T14:33:26.450 回答
1

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

链接位置由这段代码决定:

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

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

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

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

于 2012-07-02T07:02:40.843 回答
0

以下是Top Links的位置编号。

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

My Account = 10 
Whislist = 30 
Mycart = 50 
Checkout = 60
Login/Logout = 100
于 2016-07-20T12:28:10.743 回答