2012-06-30 43 views
4

我想使用local.xml重新排列我的頂級鏈接 - 特別是登錄/註銷鏈接。這可能不刪除鏈接,然後重新添加它們並修改它們的位置標籤?使用local.xml更改或重新排列Magento登錄和註銷(頂部鏈接)位置

目前(和默認情況下)登錄和註銷被設置在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

我還沒有找到更有效的方式來內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

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在你之前。在這種情況下,只需將該鏈接的位置更改爲更大的數字即可。請注意,您不能使用小於或等於零的位置值。

+0

我知道getNewPosition的'()'的位置,我知道,我可以複製的xml文件到我的主題的佈局目錄。但是,正如我原來的問題所述,我想通過'local.xml'修改鏈接的位置,以便在中心位置維護我的佈局更改。到目前爲止,我唯一想到的方法是刪除'local.xml'中的鏈接,然後立即添加它們,並在重新添加時設置position參數。這些鏈接都有不同的句柄,不應該導致位置衝突。 – cfx

0

以下是頂部鏈接的位置編號。

基於這些,你可以設置或更改頂部鏈接

My Account = 10 
Whislist = 30 
Mycart = 50 
Checkout = 60 
Login/Logout = 100 
相關問題