Don*_*nie 12 navigation magento categories
如果类别处于活动状态,如何获取所有类别和子类别,但"包含在导航菜单中"设置为"否"?
我试着用这个:
<?php
$_categories = Mage::getBlockSingleton('catalog/navigation');
foreach ($_categories->getStoreCategories() as $_category) {
$category = Mage::getModel('catalog/category');
$category->load($_category->getId());
$subcategories = explode(',', $category->getChildren());
?>
<dl>
<dt><?php echo $this->htmlEscape($_category->getName()); ?></dt>
<dd>
<ol>
<?php
foreach ($subcategories as $subcategoryId) {
$category->load($subcategoryId);
echo '<li><a href="' . $category->getURL() . '">' . $category->getName() . '</a></li>';
}
?>
</ol>
</dd>
</dl>
<?php
}
?>
Run Code Online (Sandbox Code Playgroud)
但是,如果某个类别的"在导航菜单中包含"为"否",则不会在首页显示!
100*_*les 30
你只需改变一件事!当你打电话给$_categories = Mage::getBlockSingleton('catalog/navigation')
你时,实际上是从catalog/navigation
模型中抓取了类别- 过滤掉"非导航"类别已经完成了.相反,我们可以从catalog/category
模型中获取一个集合,以确保我们在网站上获得所有类别:
$categories = Mage::getModel('catalog/category')
->getCollection()
->addAttributeToSelect('*')
->addIsActiveFilter();
Run Code Online (Sandbox Code Playgroud)
请注意,我addIsActiveFilter()
用来确保我们只获取当前活动/启用的类别.