Как условно удалить верхнюю домашнюю ссылку через local.xml в Magento 1.5.1 - PullRequest
2 голосов
/ 26 ноября 2011

Я пытаюсь сделать что-то, что кажется простым: добавьте ссылку "Главная" к моим 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>

но это не сработало, ссылка «Главная» появляется везде, в том числе и на домашней странице.

Что я делаю не так?Есть ли другой способ сделать это, не требующий взлома ядра?

Редактировать : Я получил желаемое поведение, изложив весь URL, оба в моем 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 отображает URL с помощью помощников.

Ответы [ 3 ]

1 голос
/ 26 ноября 2011

Человек.Мне нужно разобраться в этом (мне нравится подход, который вы используете), но если вы жестко закодировали свой базовый URL и, возможно, добавили небезопасный параметр SID, это должно сработать.

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

Я некак это, но это начало.

0 голосов
/ 05 июня 2012

Поместите это в 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>
...
0 голосов
/ 29 ноября 2011

Проверьте, если вы находитесь на домашней странице, то делайте что хотите:

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';
}
...