Comment changer modèle de page de la catégorie selon le niveau de la catégorie dans le code?
Question
J'ai eu un projet où il n'y avait pas de modèle et j'appliqué tous les changements de catégories dans la zone layout Admin (onglet Catalog->Manage Categories->Custom Design
). Maintenant, je dois avoir les éléments suivants:
Catégorie parente aura une grille de toutes les sous-catégories avec leurs vignettes et titres.
Sous-catégories ressemblera à peu près comme ceux par défaut - Nom, description et liste des produits / grille
Je voudrais faire et se demander ce qui est dans le bon sens.
La solution
Dans votre catalog/category/view.phtml
vous pouvez vérifier le niveau de la catégorie en utilisant ceci:
$this->getCurrentCategory()->getLevel()
Si vous voulez décider cela dans le back-end vous pouvez faire un modèle séparé tout qui affiche toutes les sous-catégories et ajouter ce qui suit à vos mises à jour de mise en page personnalisées:
<reference name="category.products">
<action method="setTemplate"><template>catalog/category/list.phtml</template></action>
</reference>
Pour lire toutes les sous-catégories que vous pouvez faire ceci:
$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 />';
}
Autres conseils
Vous devriez être en mesure de mettre un bloc si au sommet du modèle de vue catagory.
Quelque chose comme:
<?php if ($this->IsTopCategory()) : ?>
// Insert subcategory grid logic here
<?php endif; ?>