【问题标题】:Removing links from top menu using local.xml使用 local.xml 从顶部菜单中删除链接
【发布时间】:2017-11-08 17:13:29
【问题描述】:

有谁知道如何使用 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

【问题讨论】:

标签: magento


【解决方案1】:

您可以在 local.xml 中执行此操作:

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

这也是我的问题How can i get the full path in local.xml file

【讨论】:

  • 免费的“Frontend Links Manager”扩展让您可以从控制面板执行此操作。
  • 对于像我这样在 2 年后发现此问题的人来说仅供参考:此代码适用于 1.3.x,似乎在 1.8 中会导致错误。 Nikhil_K_R 的回答对我有用stackoverflow.com/a/12817619/1344515
  • FUI 现在路过的人:这在 1.9.x 上完美运行
【解决方案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。在 default 下写入它会将其从 每个页面 中删除。所以相应地调整它。我希望这会对你有所帮助。

【讨论】:

    【解决方案3】:

    应该是:

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

    但您始终可以在本地主题中复制 checkout.xml 并进行编辑。

    【讨论】:

    • 那行不通-(我知道我可以复制和编辑 checkout.xml 但我试图避免所有复制+编辑不同文件只是为了控制菜单。但也许我只需要改为这样做。
    • 这段代码将用 remove="1" 属性标记名称为“top-link-cart”的块,这意味着它不会被渲染。
    • 是的,但我不想删除块。我想删除块内的链接。
    【解决方案4】:
    <default>
    <reference name="top.links">
        <remove name="wishlist_link"/>
    </reference>
    </default>
    

    将此部分添加到您的 local.xml。这对我行得通。只需使用“删除”。就是这样。

    【讨论】:

    • 谢谢。 也可以用于删除购物车相关的项目。
    【解决方案5】:

    您也可以通过布局更新删除链接

    1. 以其名称|调用 removeLinkBlock($blockName)
    2. 通过其网址 |调用 removeLinkByUrl($url)
    3. 如果添加了文件,则覆盖文件

    函数位于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

    如果您的链接没有添加名称并且硬编码的 url 由于某种原因不起作用,您可以继续将模块 layout.xml 复制到您的自定义主题文件夹并删除添加链接的行.

    【讨论】:

      【解决方案6】:

      嗨,这会从 1.9.3 中的 top.links 中删除购物车和结帐链接

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

      基于上面公认的最佳答案,但以防万一有人想同时删除两者

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-07-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-15
        • 1970-01-01
        相关资源
        最近更新 更多