view.phtml 上的 Magento subcat 和 sub-sub cat

Magento subcat & sub-sub cat on view.phtml

例如,希望动态显示当前类别 "brand page" 的所有子类别,但也希望显示每个子类别的类别(因此在主要顶级页面上显示两个级别。)- 就像附图:

在主类别页面上,例如 div 或 li:

子类别

子子1、子子2、子子3

子类别 2

子子1、子子2、子子3

子类别 3

子子1、子子2、子子3

我进行了大量搜索,发现相似但不完全正确。 这是我能找到的最接近的东西:

http://magentoo.blogspot.com/2014/01/get-all-subcategories-of-parent-category-magento.html

我通过在我的类别页面顶部添加一个 catalog/navigation 块来完成与您描述的类似的操作:

在布局中插入一个新块,例如 app/design/frontend/$package/$theme/layout/catalog.xmlapp/design/frontend/$package/$theme/layout/local.xml.理论上,您也可以在单个类别的基础上执行此操作,只需将下面的参考部分插入类别选项卡“自定义设计 -> 自定义布局更新”:

<catalog_category_view>
    <reference name="content">
        <block type="catalog/navigation" name="catalog.catnav" template="catalog/navigation/category.phtml" before="-"/>
    </reference>
</catalog_category_view>

然后创建或修改app/design/frontend/$package/$theme/template/catalog/navigation/category.phtml:

<ul id="catnav"><?= $this->renderCategoriesMenuHtml() ?></ul>

结果应该类似于类别页面上的树结构,您可以通过定位 类 使用 CSS 设置样式以根据需要显示:

<ul id="catnav">
    <li class="level0 nav-1 active first last parent">
        <a href="...">ROOT CATEGORY NAME</a>
        <ul class="level0">
            <li class="level1 nav-1-1 first">
                <a href="...">SUBCATEGORY LEVEL 1</a>
            </li>
            <li class="level1 nav-1-2">
                <a href="...">SUBCATEGORY LEVEL 1</a>
            </li>
            <li class="level1 nav-1-3 active parent">
                <a href="...">SUBCATEGORY LEVEL 1 (PARENT + ACTIVE)</a>
                <ul class="level1">
                    <li class="level2 nav-1-3-1 active first">
                        <a href="...">SUBCATEGORY LEVEL 2 (ACTIVE)</a>
                    </li>
                    <li class="level2 nav-1-3-2">
                        <a href="...">SUBCATEGORY LEVEL 2</a>
                    </li>
                </ul>
            </li>
            <li class="level1 nav-1-4 last parent">
                <a href="...">SUBCATEGORY LEVEL 1 (PARENT)</a>
                <ul class="level1">
                    <li class="level2 nav-1-4-1 first">
                        <a href="...">SUBCATEGORY LEVEL 2</a>
                    </li>
                    <li class="level2 nav-1-4-2">
                        <a href="...">SUBCATEGORY LEVEL 2</a>
                    </li>
                </ul>
            </li>
        </ul>
    </li>
</ul>

我一起修改了网络上的代码片段,使其在没有将其硬编码到每个顶级类别中的情况下工作...

这成功了:

<?php 

$parentCategoryId = Mage::getModel('catalog/layer')->getCurrentCategory()->getId();
$cat = Mage::getModel('catalog/category')->load($parentCategoryId);
$subcats = $cat->getChildren();

?>

<!--// Get 1 Level sub category of Parent category.-->
<?php 
foreach(explode(',',$subcats) as $subCatid)
              {
                $_category = Mage::getModel('catalog/category')->load($subCatid);
  if($_category->getIsActive()) {
    //echo '<ul><a href="'.$_category->getURL().'" title="View the products for the "'.$_category->getName().'" category">'.$_category->getName().'</a>';
  // echo '</ul>';
  }
}

?>

<!--// Get 2 Level sub category of Parent sub category-->
<?php 
foreach(explode(',',$subcats) as $subCatid)
{
  $_category = Mage::getModel('catalog/category')->load($subCatid);
  if($_category->getIsActive()) {
    echo '<ul><li class="subcat-title">'.$_category->getName().'</li>';
    $sub_cat = Mage::getModel('catalog/category')->load($_category->getId());
    $sub_subcats = $sub_cat->getChildren();
    foreach(explode(',',$sub_subcats) as $sub_subCatid)
    {
          $_sub_category = Mage::getModel('catalog/category')->load($sub_subCatid);
          if($_sub_category->getIsActive()) {
              echo '<li class="sub_cat"><a href="'.$_sub_category->getURL().'" category">'.$_sub_category->getName().'</a></li>';

 }
     }
     echo '</ul>';
  }
}
?>

当然还有一些 CSS 风格