如何通过Magento 1.5.1中的local.xml有条件地删除顶部主页链接

时间:2011-11-26 14:39:52

标签: xml magento magento-1.5

我正在尝试做一些看起来应该很简单的事情:在每个页面上添加一个“主页”链接到我的top.links 除了主页(我使用的是cms页面我的主页)。如果可能的话,我想在我的local.xml中完全执行此操作。

我的想法是在默认情况下添加链接

<default>
    <reference name="top.links">
        <action method="addLink" translate="label title">
             <label>Home</label>
             <url>/</url>
             <title>Home</title>
             <prepare>true</prepare>
             <urlParams helper="core/url/getHomeUrl"/> 
             <position>1</position>
             <liParams/>
             <aParams>class="top-link-home"</aParams>
             <beforeText></beforeText>
             <afterText> / </afterText>
        </action>
     </reference>
</default>

然后在cms_index_index

上删除它
<cms_index_index>
   <reference name="top.links">
        <action method="removeLinkByUrl"><url helper="core/url/getHomeUrl"/></action>
    </reference>
</cms_index_index>

但是这没有用,主页链接显示在任何地方,包括在主页上。

我做错了什么?有没有其他方法可以做到这一点,不涉及黑客核心?

修改: 我在addLink

中拼出了整个网址,从而得到了理想的行为
<default>
    <reference name="top.links">
        <action method="addLink" translate="label title">
             <label>Home</label>
             <url>http://www.mysite.com/</url>
             <title>Home</title>
             <prepare/>
             <urlParams/> 
             <position>1</position>
             <liParams/>
             <aParams>class="top-link-home"</aParams>
             <beforeText></beforeText>
             <afterText> / </afterText>
        </action>
     </reference>
</default>

和我的removeLinkByUrl

<cms_index_index>
   <reference name="top.links">
        <action method="removeLinkByUrl"><url>http://www.mysite.com/</url></action>
    </reference>
</cms_index_index>

解决了手头的问题,但没有回答我原来的问题。我想我需要更好地了解Magento如何使用帮助器呈现网址。

3 个答案:

答案 0 :(得分:1)

曼。我需要调查一下(我喜欢你正在采取的方法),但如果你硬编码你的基本网址并可能附加非安全的SID参数,这应该可行。

<cms_index_index>
    <reference name="top.links">
        <action method="removeLinkByUrl"><url><![CDATA[http://BASE_URL/?___SID=U]]></url></action>
    </reference>
</cms_index_index>

我不喜欢这个,但这是一个开始。

答案 1 :(得分:0)

检查您是否在主页,然后按照自己的意愿行事:

if($this->getIsHomePage()) {  
   echo 'This is Homepage';  
} else {  
   echo 'This is NOT Homepage';  

或检查标识符名称是否为主页:

$routerName = Mage::app()->getRequest()->getRouteName();  
$ident = Mage::getSingleton('cms/page')->getIdentifier();  
if($routerName == 'cms' && $ident == 'home') {  
  echo 'This is Homepage';
} else {  
  echo 'This is NOT Homepage';
}

答案 2 :(得分:0)

将它放在page.xml中:

<block type="page/template_links" name="top.links" as="topLinks">
<action method="addLink" translate="label title" name="backhome">
        <label>LABEL</label>
        <url>/</url>
        <title>Home</title>
        <prepare/><urlParams/><position>1</position></action>            
</block> 

并在页面自定义布局xml

...
<reference name="top.links">
    <action method="removeLinkByUrl"><url>/</url></action>
</reference>
...