如果类别处于活动状态,如何获取所有类别和子类别,但“包含在导航菜单中”设置为“否”?
我尝试使用它:
<?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
}
?>
但如果某个类别的“包含在导航菜单中”为“否”,则不会显示在首页上!
答案 0 :(得分:30)
你只需改变一件事!当您致电$_categories = Mage::getBlockSingleton('catalog/navigation')
时,您实际上是专门从catalog/navigation
模型中获取类别 - 过滤掉“非导航”类别已经完成。相反,我们可以从catalog/category
模型中获取一个集合,以确保我们在网站上提供所有类别:
$categories = Mage::getModel('catalog/category')
->getCollection()
->addAttributeToSelect('*')
->addIsActiveFilter();
请注意,我使用的是addIsActiveFilter()
,以确保我们只获取当前有效/已启用的类别。
答案 1 :(得分:3)
我更喜欢使用目录/类别助手
$helper = Mage::helper('catalog/category');
$categories = $helper->getStoreCategories();