【问题标题】:Hide a certain category in layered navigation on search results在搜索结果的分层导航中隐藏某个类别
【发布时间】:2012-12-31 17:27:29
【问题描述】:

我想从我的分层导航中只隐藏一个类别。我将“在导航中显示”设置为否,但它仍然显示在搜索结果页面上。有办法隐藏吗?

【问题讨论】:

    标签: magento navigation hide categories


    【解决方案1】:

    要从分层导航中排除单个类别,请按照以下步骤操作。请注意,您可以对任何类型的类别列表执行此操作。

    1. 打开/app/design/frontend/default/YOURTHEMENAME/template/catalog/navigation/left.phtml。如果它不存在,请从基本文件夹中复制它。
    2. 查找代码:

      <dl id="narrow-by-list2">
          <dt><?php echo $this->__('Category') ?></dt>
          <dd>
              <ol>
              <?php foreach ($_categories as $_category): ?>
      
                  <?php if($_category->getIsActive()): ?>
                  <li>
                      <a href="<?php echo $this->getCategoryUrl($_category) ?>"<?php if ($this->isCategoryActive($_category)): ?> class="current"<?php endif; ?>><?php echo $this->htmlEscape($_category->getName()) ?></a> (<?php echo $_category->getProductCount() ?>)
                  </li>
                 <?php endif; ?> 
      
              <?php endforeach ?>
              </ol>
          </dd>
      </dl>
      
    3. 在 foreach 循环中添加这个 if 语句(不要忘记关闭它):
      &lt;?php if ($_category-&gt;getId() != 22): ?&gt;

    4. 新代码将如下所示:

      <dl id="narrow-by-list2">
          <dt><?php echo $this->__('Category') ?></dt>
          <dd>
              <ol>
              <?php foreach ($_categories as $_category): ?>
               <?php if ($_category->getId() != 22): ?> <!-- If statement here, replace category ID -->
                  <?php if($_category->getIsActive()): ?>
                  <li>
                      <a href="<?php echo $this->getCategoryUrl($_category) ?>"<?php if ($this->isCategoryActive($_category)): ?> class="current"<?php endif; ?>><?php echo $this->htmlEscape($_category->getName()) ?></a> (<?php echo $_category->getProductCount() ?>)
                  </li>
                 <?php endif; ?> 
                <?php endif; ?> <!-- End new If statement here -->
              <?php endforeach ?>
              </ol>
          </dd>
      </dl>
      
    5. 类别 ID 替换为您要排除的类别的 ID。

    6. 要查找某个类别的 ID,请转到您的 Magento 管理面板和类别,当您点击左上角的类别时,您会看到它的数字 ID。

    【讨论】:

    • template/catalog/navigation/left.phtml 不是 SEARCH RESULTS 页面上显示的分层导航(它只是目录浏览导航),这是 template/catalog/layer/view.phtml - 但是它似乎是一个抽象的列表,没有特定于类别。
    • OK you want template/catalog/layer/view.phtml 在这个文件中你可能会找到以下代码: getItemsCount()): ?>
      __($_filter->getName()) ?>
      getHtml() ?>
      您需要过滤掉我们不想要的过滤器名称.. __($_filter->getName()) ?> 我到家时会为您检查!
    • 也许看看这个inchoo.net/ecommerce/magento/layered-navigation-but-not-quite。您可能需要重写本文中列出的分层选项的方式。然后您可以继续使用我上面提到的方法过滤特定类别。
    • 我并不是说很难,但是根据文本匹配将检查硬编码到视图文件中是非常糟糕的做法。每个类别的管理中已经有一个名为“在导航中显示”的切换 - 使用这是一个更稳定和未来思考的解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多