Trier une liste de catégorie par ordre alphabétique | Magento

Diineros Messages postés 13 Date d'inscription   Statut Membre Dernière intervention   -  
ThEBiShOp Messages postés 8411 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

J'ai un code qui affiche une liste de catégories mais je n'arrive pas à afficher cette liste par ordre alphabétique. Merci pour votre aide

Voici le code :


Voici l'affichage :
A voir également:

2 réponses

ThEBiShOp Messages postés 8411 Date d'inscription   Statut Contributeur Dernière intervention   1 566
 
Salut,

merci d'utiliser les balises de codes et de copier/coller ton code, ça sera beaucoup plus simple à lire qu'une petite image, on pourra également réaliser des copier/coller au besoin et aussi avoir une numérotation des lignes.

Ensuite, pour te répondre, le plus facile avec ce que tu montres, ça serait de récupérer tes données dans un tableau, puis de trier ce tableau par ordre alpha et de le parcourir à nouveau pour faire ton affichage.

Ce n'est pas le top, parce que tu as un double parcours, l'idéal serait que en ligne 4, tu récupères ton $cats déjà trié. Alors je ne connais pas magento, tu as peut être une manière d'effectuer un order by sur ->getCategoryIds ou bien il faudrait créer une nouvelle méthode pour le faire directement.
0
Diineros Messages postés 13 Date d'inscription   Statut Membre Dernière intervention  
 


<div class="box-collateral">
<?php
$_product = $this->getProduct();
$cats = $_product->getCategoryIds();
?>
<h2>Liste des périphériques utilisant ce produit</h2>
<ul id="containingCats">

<?php

foreach($cats as $category_id):
$_cat = Mage::getModel('catalog/category')->Load($category_id);

//to skip categories within the "cartridge model" section
if($_cat->getParentId() == 16)
continue;
?>

<li><a href="<?php echo $_cat->getUrl(); ?>"><?php echo $_cat->getName();?></a></li>
<?php
endforeach;
?>
</ul>
<br class="clrBth"/>
</div>




voila comme ça je pense que ça ira mieux et désolé pour l'attente
0
ThEBiShOp Messages postés 8411 Date d'inscription   Statut Contributeur Dernière intervention   1 566
 
C'est un peu mieux, mais on peut faire encore mieux ! Si tu cliques sur la petite fleche à côté de la balise de code, tu verras qu'on peut choisir le langage, si tu choisis PHP, tu obtiendras alors la coloration syntaxique ET la numérotation des lignes.
Ils auraient du ajouter la numérotation même pour la balise code de base à mon goût... mais ça tu n'y peux rien toi ^^

Par ailleurs, ma réponse ne change pas, regarde si ça te convient ;)
0
Diineros Messages postés 13 Date d'inscription   Statut Membre Dernière intervention   > ThEBiShOp Messages postés 8411 Date d'inscription   Statut Contributeur Dernière intervention  
 
<div class="box-collateral">
<?php
$_product = $this->getProduct();
$cats = $_product->getCategoryIds();
?>
<h2>Liste des périphériques utilisant ce produit</h2>
<ul id="containingCats">

<?php

               foreach($cats as $category_id):
               $_cat = Mage::getModel('catalog/category')->Load($category_id);
    
               //to skip categories within the "cartridge model" section
               if($_cat->getParentId() == 16)
                         continue;
?>

<li><a href="<?php echo $_cat->getUrl(); ?>"><?php echo $_cat->getName();?></a></li>
<?php
endforeach;
?>
</ul>
<br class="clrBth"/>
</div>
0
Diineros Messages postés 13 Date d'inscription   Statut Membre Dernière intervention   > Diineros Messages postés 13 Date d'inscription   Statut Membre Dernière intervention  
 
ha voila c'est largement mieux, merci ;)
Ecoute je vais essayer de faire comme tu m'a dis
0
Diineros Messages postés 13 Date d'inscription   Statut Membre Dernière intervention  
 
Le truc c'est que j'ai déjà essayé de trier le $cats mais rien qui marche.
0
ThEBiShOp Messages postés 8411 Date d'inscription   Statut Contributeur Dernière intervention   1 566
 
Bah si tu essaies juste de trier $cats, c'est normal.
J'imagine que $cats est un tableau d'id avec des index numériques du genre

$cats = array(
    '0' => '12',
    '1' => '14',
    '2' => '16',
    '3' => '19',
    '4' => '21',
    '5' => '27',
);


il n'y a donc pas grand chose à trier à ce niveau là.
Si tu construits un tableau avec les données que tu veux afficher, là tu pourras faire un tri avant ton affichage. Mais tu vas d'abord devoir le créer parce qu'il n'existe pas dans ton code.
0
Diineros Messages postés 13 Date d'inscription   Statut Membre Dernière intervention   > ThEBiShOp Messages postés 8411 Date d'inscription   Statut Contributeur Dernière intervention  
 
Oui il faut que je construise un tableau c'est ce que je me suis dit mais le problème c'est que les données je ne les connais pas à l'avance si tu vois ce que je veux dire. Les données sont récupérées dans la base de données et justement je n'arrive pas a faire un tableau avec ces données à l'intérieur pour pouvoir ensuite les trier.
0
ThEBiShOp Messages postés 8411 Date d'inscription   Statut Contributeur Dernière intervention   1 566
 
C'est ce que je t'explique dans mon premier message, tu construits ton tableau dans ton foreach, puis tu tries ton tableau, puis tu parcours ton tableau pour faire ton affichage.
0
Diineros Messages postés 13 Date d'inscription   Statut Membre Dernière intervention  
 
Ok donc je dois juste toucher au foreach pour faire les modifs
0
ThEBiShOp Messages postés 8411 Date d'inscription   Statut Contributeur Dernière intervention   1 566
 
oui, tu vas devoir en ajouter un autre après
0