【问题标题】:Removing Category from left nav Magento从左侧导航 Magento 中删除类别
【发布时间】:2016-09-01 17:32:47
【问题描述】:

我想从 magento 的左侧导航中删除一个类别,但是我希望它保留在主导航 top.phtml 中。到目前为止,我能想到的唯一方法是在 local.xml 中使用一些 XML 就像这样:

    <reference name="catalog.leftnav">
        <action method="unsetChild"><alias>Item to remove</alias></action>
    </reference>

但是我不知道要取消设置的项目的别名。类别名称为:

从美国在线商店购买

& 网址是:

从我们的在线商店购买

如果有人能帮忙,那就太棒了,我完全失去了这个情节。

谢谢

【问题讨论】:

  • 您是否尝试将 Is Anchor 设置为 No?
  • 是的,我试过了。但它从两个地方删除了它。我最终使用了这个:jQuery(".pcl-items-menu li span:contains('To purchase from US online store')").parent().hide();我知道它不漂亮,但是。

标签: xml magento navigation


【解决方案1】:

这是一个非常古老的问题,但它可以帮助任何像我一样拥有相同东西的人。

要从侧边栏中删除类别列表,您可以修改 xml 文件,如下所示。

从分层导航中移除:

如果主题有这样的文件,则在local.xml文件中添加以下代码:

<catalog_category_layered>
     <reference name="catalog.leftnav">           
        <action method="unsetChild">
            <child>category_filter</child>
        </action>
    </reference>
</catalog_category_layered>

如果local.xml不存在,则在catalog.xml文件中添加以下代码:

<block type="catalog/layer_view" name="catalog.leftnav" after="currency" template="catalog/layer/view.phtml">
    <action method="unsetChild">
        <child>category_filter</child>
    </action>       
</block>

从类别默认页面中删除:

如果主题有这样的文件,则在local.xml文件中添加以下代码:

<reference name="catalog.leftnav" >       
    <action method="unsetChild">
         <child>category_filter</child>
    </action>
</reference>

如果local.xml不存在,则在catalog.xml文件中添加以下代码:

 <block type="catalog/navigation" name="catalog.leftnav" after="currency" template="catalog/navigation/left.phtml">
   <action method="unsetChild">
         <child>category_filter</child>
    </action>
 </block>

从目录搜索页面中删除:

如果主题有这样的文件,则在local.xml文件中添加以下代码:

<catalogsearch_result_index>
   <reference name="catalog.leftnav">           
        <action method="unsetChild">
            <child>category_filter</child>
        </action>
    </reference>
</catalogsearch_result_index>

如果local.xml不存在,则在catalogsearch.xml文件中添加以下代码:

<block type="catalogsearch/layer" name="catalogsearch.leftnav" after="currency" template="catalog/layer/view.phtml">
      <action method="unsetChild">
            <child>category_filter</child>
        </action>
</block>

注意:如果您已在管理员中启用缓存,请清除缓存。

【讨论】:

    【解决方案2】:

    在这种情况下,通过 XML 取消设置对您没有帮助,只会禁用整个块,即完整的左侧导航。

    没有办法(开箱即用)禁用顶部导航而不是左侧导航上的单个类别。

    您可以采取一些方法,尽管我猜有些方法对于您需要的东西来说有点过头了,一个简单的肮脏方法是:

    您总是可以将 Mage_Catalog_Block_Navigation 复制到本地命名空间 (app/code/local/Mage/Catalog/Block/Navigation.php)

    然后您可以重命名它 (Navigationleft.php) 并根据需要进行更改。然后,您将更改 XML 语句以将此新块用于左侧导航

    <reference name="left">
            <block type="catalog/navigationleft" 
                   name="catalog.leftnav" 
                   after="currency" 
                   template="catalog/navigation/left.phtml"
             />
    </reference>
    

    您总是可以向 Catalog 实体添加一个新属性并修改 Navigation 以在显示项目时使用此 (show_on_left_nav) 和 is_active,尽管这可能有点矫枉过正:)

    【讨论】:

    • 谢谢你,看起来这大部分都是矫枉过正的,尤其是在涉及到核心问题时。问题是 magento 构建最初不是我的,所以我必须处理我已经拥有的东西。我可能只是做它hacky和jQuery它来隐藏。我确实想知道是否可以找到该类别 ID,然后在模板>目录>导航>left.phtml 中添加到 foreach 如果在此类别中不显示。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-03
    • 2013-12-30
    • 2014-02-01
    • 2020-05-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多