2013-01-11 105 views
11

如何獲得所有類別和子類別,如果該類別處於活動狀態,但「在導航菜單中包含」設置爲「否」?我如何獲得所有類別和子類別?

我嘗試使用此:

<?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 

} 
?> 

但是,如果一個類的「在導航菜單中包含‘是’否」,它不會顯示在頭版!

回答

29

你只需要改變一件事!當您致電$_categories = Mage::getBlockSingleton('catalog/navigation')時,您實際上是從catalog/navigation模型中特別抓取類別 - 「非導航」類別的過濾已經完成。相反,我們可以從catalog/category型號抓住一個集合,以確保我們得到了所有類別在網站上提供:

$categories = Mage::getModel('catalog/category') 
     ->getCollection() 
     ->addAttributeToSelect('*') 
     ->addIsActiveFilter(); 

請注意,我用的addIsActiveFilter(),以確保我們只得到一個當前激活/啓用類別。

+1

謝謝,你真是幫了!顯示什麼是必要的,然後我將它應該是它! – Oleg

3

我更喜歡使用目錄/類別幫手

$helper = Mage::helper('catalog/category'); 
$categories = $helper->getStoreCategories(); 
相關問題