2013-01-11 12 views
11

Jak uzyskać wszystkie kategorie i podkategorie, jeśli kategoria jest aktywna, ale "Uwzględnij w menu nawigacji" jest ustawione na "Nie"?Jak mogę uzyskać wszystkie kategorie i podkategorie?

próbuję użyć tego:

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

} 
?> 

Ale jeśli to kategoria w „Uwzględnij w menu nawigacyjnym«brzmi»Nie”, to nie pojawi się na pierwszej stronie!

Odpowiedz

29

Trzeba tylko zmienić jedną rzecz! Kiedy dzwoni się pod numer $_categories = Mage::getBlockSingleton('catalog/navigation'), w rzeczywistości przechwytujecie kategorie z modelu catalog/navigation w szczególności - filtrowanie kategorii "niezwiązanych z nawigacją" jest już zakończone. Zamiast tego, możemy pobrać kolekcję z modelu catalog/category, aby upewnić się uzyskać wszystkie kategorie dostępne na stronie:

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

Zauważ, że używam addIsActiveFilter(), aby upewnić się dostać tylko kategorie, które są aktualnie aktywne/aktywne.

+1

Dzięki, to naprawdę pomogło! Wyświetla to, co konieczne, a następnie przyniosę to tak, jak powinno być! – Oleg

3

wolę używać katalogu/kategorii pomocnik

$helper = Mage::helper('catalog/category'); 
$categories = $helper->getStoreCategories(); 
Powiązane problemy