Come cambiare modello di categoria pagina a seconda del livello di categoria nel codice?
Domanda
Ho avuto un progetto in cui non vi era alcun motivo e ho applicato tutte le modifiche delle categorie di layout in zona Admin (scheda Catalog->Manage Categories->Custom Design
). Ora ho bisogno di avere la seguente:
Settore superiore avrà una griglia di tutte le sottocategorie con le loro miniature e titoli.
Sotto-categorie sarà più o meno come quelli di default - nome, descrizione e lista dei prodotti / griglia
Così mi piacerebbe fare questo e mi chiedo qual è il modo giusto.
Soluzione
Nel vostro catalog/category/view.phtml
è possibile controllare il livello di categoria con questo:
$this->getCurrentCategory()->getLevel()
Se si vuole decidere questo nel backend si potrebbe fare un intero modello separato che visualizza tutte le sottocategorie e aggiungere la seguente ai vostri aggiornamenti di layout personalizzati:
<reference name="category.products">
<action method="setTemplate"><template>catalog/category/list.phtml</template></action>
</reference>
Per leggere tutte le sottocategorie si può fare questo:
$children = explode(',', $this->getCurrentCategory()->getChildren());
$collection = Mage::getModel('catalog/category')->getCollection()
->addAttributeToSelect('name')
->addAttributeToFilter('entity_id', array(
'in' => $children
))->load();
foreach ($collection as $category) {
echo $category->getName() . '<br />';
}
Altri suggerimenti
Si dovrebbe essere in grado di mettere un blocco if nella parte superiore del modello di vista catagory.
Qualcosa di simile:
<?php if ($this->IsTopCategory()) : ?>
// Insert subcategory grid logic here
<?php endif; ?>