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.xml 或 app/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 风格
例如,希望动态显示当前类别 "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.xml 或 app/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 风格