2013-01-11 18 views
11

Wie kann ich alle Kategorien und Unterkategorien erhalten, wenn die Kategorie aktiv ist, aber "In Navigationsmenü aufnehmen" auf "Nein" gesetzt ist?Wie kann ich alle Kategorien und Unterkategorien bekommen?

Ich versuche, diese zu nutzen: „In Nav-Menü‚

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

} 
?> 

Aber wenn eine Kategorie der‘Nein“ ist, wird es nicht auf der Titelseite zeigen!

Antwort

29

Sie müssen nur eine Sache ändern! Wenn Sie $_categories = Mage::getBlockSingleton('catalog/navigation') anrufen, greifen Sie tatsächlich auf die Kategorien des Modells catalog/navigation zurück - das Ausfiltern von Kategorien ohne Navigation ist bereits abgeschlossen. Stattdessen können wir eine Sammlung aus dem catalog/category Modell greifen, um sicherzustellen, dass wir alle Kategorien auf der Website erhalten:

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

Bitte beachte, dass ich addIsActiveFilter() bin mit um sicherzustellen, dass wir nur den Kategorien erhalten, die derzeit aktiv/aktiviert ist.

+1

Dank verwende, helfen Sie wirklich! Zeigt an, was notwendig ist, dann bringe ich es so, wie es sein sollte! – Oleg

3

Ich ziehe den Katalog/Kategorie Helfer

$helper = Mage::helper('catalog/category'); 
$categories = $helper->getStoreCategories(); 
Verwandte Themen