排序"我的帐户" Magento中的链接

时间:2015-07-15 00:44:19

标签: xml magento magento-1.9

我希望在Magento中添加注销链接到我的帐户页面(目前使用的是1.9.0.1),并在local.xml中使用以下代码:

<customer_account>
  <reference name="customer_account_navigation">
    <action method="addLink" module="customer" translate="label">
      <name>logout</name>
      <path>customer/account/logout</path>
      <label>Logout</label>
    </action>
  </reference>
</customer_account>

但是,我希望确保底部显示退出链接,同时将其保留在相同的列表中。我想知道是否有合适的方式通过XML实现这一目标,或者我是否必须通过前端模板对其进行清除。

谢谢!

1 个答案:

答案 0 :(得分:1)

不幸的是,没有这样的规定可以通过XML来实现。但是如果您在local.xml中使用上述代码,则最后会显示您添加的链接。因此,最简单的解决方案是使用local.xml本身来添加此类链接。

如果你想知道为什么不能通过xml,那么这就是原因。当您尝试addLink时,Magento会做什么,将项目附加到数组中。只有添加链接的规定。没有删除链接的规定。

由于最后处理了local.xml文件,您通过上述脚本添加的链接会将该链接附加到该数组的最后一个,因此您最终会看到logout链接。

但如果您有兴趣通过观察者这样做,那么您可以使用事件controller_action_layout_generate_blocks_after。如果你使用它,那么你可以抓住这样的所有链接。

<?php
public function yourObserverMethod(Varien_Event_Observer $observer)
{
    $fullaction = $observer->getEvent()->getAction()->getFullActionName();
    if (Mage::getSingleton('customer/session')->isLoggedIn()
        && strpos($fullaction, 'customer_account') !== false
    ) {
        $layout = $observer->getEvent()->getLayout();
        $navigationBlock = $layout->getBlock('customer_account_navigation');
        if ($navigationBlock !== false) {

             //here you get all links.do anything with this array.
            $links = $navigationBlock->getLinks();
        }
    }
    return $this;
}