2013-01-11 8 views
11

Come posso ottenere tutte le categorie e sottocategorie se la categoria è attiva, ma "Includi nel menu di navigazione" è impostato su "No"?Come posso ottenere tutte le categorie e sottocategorie?

provo ad usare questo:

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

} 
?> 

Ma se di una categoria “Includi nel menu di navigazione 'è' no”, non mostrerà in prima pagina!

risposta

29

Hai solo bisogno di cambiare una cosa! Quando chiami $_categories = Mage::getBlockSingleton('catalog/navigation') stai effettivamente acquisendo le categorie dal modello catalog/navigation in modo specifico - il filtraggio delle categorie "non di navigazione" è già completo. Invece, siamo in grado di prendere una collezione dal modello catalog/category per assicurarsi che si ottiene tutte le categorie disponibili sul sito:

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

Nota che sto usando addIsActiveFilter() per assicurarsi che abbiamo solo le categorie che sono attualmente attivi/abilitato.

+1

Grazie, davvero aiutato! Mostra ciò che è necessario, quindi lo porterò come dovrebbe essere! – Oleg

3

preferisco usare il catalogo/categoria aiutante

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