我希望在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实现这一目标,或者我是否必须通过前端模板对其进行清除。
谢谢!
答案 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;
}