Удаление ссылок из верхнего меню с помощью local.xml

Кто-нибудь знает, как я могу удалить ссылки из верхнего меню, используя local.xml.

В файле checkout.xml по умолчанию есть:

<reference name="top.links">
    <block type="checkout/links" name="checkout_cart_link">
        <action method="addCartLink"></action>
        <action method="addCheckoutLink"></action>
    </block>
</reference>

И я хотел бы удалить addCartLink из верхнего меню. Один из способов - просто отредактировать файл checkout.xml, но он считает, что было бы гораздо лучшим решением просто добавить удаление в файл local.xml, но я не могу получить правильное имя для удаления. Если я сделаю

<layout>
    <default>
        <remove name="top.links" />
    </default>
</layout>

Это удаление всего меню, но как удалить только один элемент из меню с помощью locale.xml?

Я использую Magento 1.6

Ответ 2

<default>
 <reference name="top.links">
    <block type="wishlist/links" name="wishlist_link"/>
    <action method="removeLinkBlock"><blockName>wishlist_link</blockName></action>
 </reference> 
</default>

Добавьте эту часть в свой local.xml. Написание этого значения по умолчанию удалит его с на каждой странице. Поэтому отрегулируйте его соответствующим образом. Надеюсь, это поможет вам.

Ответ 3

Это должно быть:

<layout>
     <default>
        <reference name="top.links">
            <reference name="checkout_cart_link">
                <remove name="top-link-cart" />
            </reference>
        </reference>
     </default>
</layout>

Но вы всегда можете скопировать checkout.xml в свою локальную тему и отредактировать ее.

Ответ 4

<default>
<reference name="top.links">
    <remove name="wishlist_link"/>
</reference>
</default>

Добавьте эту часть в свой local.xml. Это подходит для меня. Просто используйте "удалить". Что это.

Ответ 5

Вы можете удалить ссылку с помощью обновления макета либо

  • по названию | вызов removeLinkBlock ($ blockName)
  • по его URL | вызов removeLinkByUrl ($ url)
  • перезапись файла была добавлена ​​

Функции живут в Mage_Page_Block_Template_Links

Вариант 1

Для функции removeLinkByUrl() необходим параметр url, который обычно предоставляется вспомогательной функцией в соответствующем расширении. Просто возьмите его там, и вы можете использовать что-то вроде

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

В приведенном выше случае customer - это имя расширения, а getRegisterUrl - это функция в классе-помощнике.

Если ваше расширение не предоставляет никакой функции, которая возвращает ссылку, вы можете попробовать следующее

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

Вариант 2

Если ссылка была добавлена ​​с именем, например

<reference name="top.links">
   <block type="wishlist/links" name="wishlist_link" />
   <action method="addLinkBlock"><blockName>wishlist_link</blockName></action>
</reference>

вы можете просто использовать

<reference name="top.links">
   <remove name="wishlist_link"/>
</reference>

или

<default>
 <reference name="top.links">
    <block type="wishlist/links" name="wishlist_link"/>
    <action method="removeLinkBlock"><blockName>wishlist_link</blockName></action>
 </reference> 
</default>

Вариант 3

Если ваша ссылка не была добавлена ​​с именем, а жесткий код не работает по какой-либо причине, вы можете просто пойти и скопировать модули layout.xml в свою папку с настраиваемыми темами и удалить строки, в которые была добавлена ​​ссылка.

Ответ 6

Привет Это удаляет ссылки на тележку и checkout из top.links в 1.9.3

<reference name="top.links"> 
  <action method="removeLinkByUrl">
    <url helper="checkout/url/getCartUrl" />
  </action>
  <action method="removeLinkByUrl">
    <url helper="checkout/url/getCheckoutUrl" />
  </action>
</reference>

на основе наилучшего принятого ответа выше, но на всякий случай, когда кто-то хочет удалить оба