J'aimerais savoir comment trier cette liste de catégories (j'ai suivi ce tutoriel ici <?php
$cats = Mage::getModel('catalog/category')->load(3)->getChildren();
$catIds = explode(',',$cats);
?>
<ul>
<?php foreach($catIds as $catId): ?>
<li>
<?php
$category = Mage::getModel('catalog/category')->load($catId);
echo '<a href="' . $category->getUrl() . '">';
echo $category->getName() . '</a>';
?>
</li>
<?php endforeach; ?>
</ul>
5 Réponses :
Je suggère fortement à lok ici d'abord
Commentaire vraiment utile :) quel nom de champ avez-vous utilisé pour le tri
$ CATS = MAGE :: getmodel ('Catalogue / catégorie') -> Addattributetosort ("posi tion", 'desc') -> charge (3) -> getchildren ();
@Anton - qui ne pourrait jamais fonctionner car un modèle est un modèle, pas une collection. Seules collections peuvent être triées.
Vous avez raison, j'ai oublié la partie de collection qui peut être facilement utilisée au lieu de la charge
Hmm, toujours ne fonctionne pas. Peut-être que les paramètres d'administration pour la position sont stockés ailleurs.
Et ne devrait pas être addattributetosort à la fin?
Utilisez l'approche ClockworkEeek mes suggestions sont théoriques et jamais testées
Vous faites beaucoup trop de travail pour vous essayer de traiter des identifiants et des trucs. Ce qui suit est déjà trié par position en standard.
<?php $cats = Mage::getModel('catalog/category')->load(3)->getChildrenCategories(); ?> <ul> <?php foreach($cats as $category): ?> <li> <a href="<?php echo $category->getUrl() ?>"><?php echo $category->getName() ?></a> </li> <?php endforeach; ?> </ul>
Merci mec, cela fonctionne comme un charme. Vous avez sauvé ma journée. Et oui, c'est une approche de nettoyage de façon que d'utiliser des identifiants de chat et des trucs. Merci encore ;)
Cela a l'air bien, mais je ne semble pas pouvoir obtenir une version de travail. En utilisant magento 1.6. Je voudrais charger des catégories pour le magasin actif.
@Lucas - Pour modifier cet extrait, remplacez l'ID de catégorie (dans ce cas 3 code>) avec
mage :: app (app () -> getStore () -> gretrootcatedoryId () code>. Cependant, il existe d'autres moyens également, regardez le catalogue
Catalogue / Navigation / *. PHTML CODE> Modèles pour voir comment il est normalement fait, ou ouvre une nouvelle question si vous avez besoin de quelque chose de spécifique.
Brillant! J'ai aussi ajouté la condition si ($ sous-catégorory-> getisactive ()) { code> à l'intérieur de la boucle.
Ceci est très concis, comment accéderiez-vous d'autres attributs comme la description du produit? Ne semble pas être disponible de cette façon.
@Johnsnails ici, $ CATS CODE> est déjà chargé de sorte que vous ne puissiez pas être modifié plus loin et inclut uniquement "URL", "Nom", "Nom", "Position", "IS_RANCHOR" Les champs "is_active". Pour voir la description également, vous devez utiliser l'une des autres réponses qui vous permet d'appeler
addattributeetoselect () code>.
après avoir récupéré les catégories: strong> p> et ensuite: strong> p> inverseur du retour (1 et -1) changerait évidemment la commande.
Cela a bien fonctionné pour moi.
J'espère que cela aide quelqu'un. P> p>
<?php $model_category = Mage::getModel('catalog/category')->load($_category->getEntityId()); $sub_categories = $model_category->getCollection(); $sub_categories -> addAttributeToSelect('url_key') -> addAttributeToSelect('name') -> addAttributeToFilter('is_active',1) -> addIdFilter($model_category->getChildren()) -> setOrder('position', 'ASC') -> load(); ?> <?php foreach($sub_categories->getData() as $each_subcat): ?> <?php $model_subcat = Mage::getModel('catalog/category')->load($each_subcat['entity_id']); ?> <?php endforeach; ?>
Si vous souhaitez trier les catégories par la position créée dans AdminHTML, vous pouvez alors, puisque Le cas ici est d'obtenir des catégories à partir de Catalogue / Catégorie Code> est une instance de
Mage_Catalog_model_resource_category_collection code>, crée une requête où vous spécifiez. Ce que vous voulez sélectionner, filtrer et / ou trier.
catalog_category_entity code> Sélectionnez uniquement le nom, filtrant après l'ID et Trier Strong> la requête sur la position code>. < / p>
Pourquoi est-ce une solution? S'il vous plaît, expliquez.
Cela fonctionne si vous utilisez 'position' code> au lieu de
"nom" code>.
Cette réponse s'attend également à ce que vous soyez itération par les catégories des parents. Pour les catégories de niveau supérieur, vous pouvez utiliser: -> addattribuetofilter ('niveau', 2) code> sans le
-> addfieldtofilter ('parent_id', $ califory) code> ligne. Le niveau est 2 pour les catégories de niveau supérieur, car ils sont sous la catégorie racine, ce qui est le niveau 1.