Un billet rapide et technique pour une astuce d’intégration PrestaShop utile dans certains cas.
Comment afficher une liste de sous-catégories ?
Durant votre intégration PrestaShop, soit vous vous tapez à la main les X liens correspondant aux sous-catégories (je ne suis pas fan), soit vous listez les sous-catégories via une boucle (on préfère).
Voici le bout de code à ajouter dans vos fichiers .tpl :
La fonction getChildren va rechercher les sous-catégories de la catégorie ayant l’ID 993 dans notre cas – à modifier selon vos besoins.
La variable $lang_def est à déclarer avant si vous êtes en multilingue, sinon à remplacer par l’ID de la langue utilisée si vous utilisez une seule langue.
Et c’est tout ! A bientôt 🙂
Bonjour, vous allez peut-être pouvoir m’aider, je cherche à afficher la catégorie précédente, et la catégorie suivante dans ma catégorie. Comment y arriver?
Ceci afin d’aider à faire mon maillage interne. sur presta 1.6
merci pour votre aide
Bonjour Manu,
C’est un sujet différent aussi je me note pour un prochain tuto PrestaShop 😉
A bientôt !
Bonjour Arnaud,
j’ai testé avec ce code:
{foreach Category::getChildren({$product_category.id_category}, 1) as $category}
getCategoryLink($category.id_category)}”>{$category.name}
{/foreach}
j’ai donc changé l’id par la variable de l’id de la catégorie par défault du produit en cours, pourquoi cela ne fonctionne pas?
car la variable $product_category.id_category existe bien et fonctionne.
Merci pour ton aide
Bonjour Manu,
Voici le code utilisé qui fonctionne, avec pour id de lang 1 :
[php]
<!– AFFICHER LES SOUS-CATEGORIES DE LA CATEGORIE DU PRODUIT CONSULTE –>
<ul>
{foreach Category::getChildren($product->id_category_default, 1) as $category}
<li><a href="{$link->getCategoryLink($category.id_category)}">{$category.name}</a></li>
{/foreach}
</ul>
[/php]
C’est parfaitement fonctionnel sur PrestaShop 1.6 🙂
Merci pour ton aide, cela ne fonctionne pas sur 1.6.1.11, RRR
une idée?
En utilisant le {debug}, la variable $product->id_category_default est-elle bien présente sur la page produit ?
non la variable n’est pas présente
Je viens de tester sur PrestaShop 1.6.1.15 et ça fonctionne également…
Avec le {debug}, tu dois avoir pour $product l’information de catégorie par défaut, colles juste la partie liée à $product.
RRR, cela donne une page sans css.
il faut bien que je mette la boutique en mode debug? dans le fichier config.inc? je ne comprend pas.
Tu me dit avec le {debug}?
je me débrouille un peut avec presta pourtant.
La variable {debug} est à placer dans le fichier .tpl pour ouvrir la console avec les variables disponibles après rafraichissement de la page.
J’ai rédigé un tuto là-dessus : Ajouter des conditions d’affichage dans PrestaShop
J’avais bien vu ce tuto, mais aucune console ne s’ouvre quand le debug} est installé dans mon fichier product.tpl.
Je suis vraiment nul sur cet histoire!
je ne comprend pas pourquoi cela ne fonctionne pas
enfin trouvé, un problème avec le cache. Donc la fenetre debug s’ouvre, je vois pleins de variables,
mais pour product j’ai ceci:
$product_categories
$product_category
je n’ai pas de product.
j’ai bien la variable ->id_category_default = “209” (209 étant la catégorie du produit par default)
Mais l’affichage ne se fait pas, car certainement qu’il n y a pas de sous catégories dans la catégorie 209.
Il faudrait peut etre afficher la catégorie parent pour afficher les enfant de cette catégorie, non?
catégorie par défault de mon produit: 209
catégorie parent du la catégorie de mon produit par default: 168
les id des sous catégorie 168:
167
186
209
210
je doit donc avoir un affichage des catégorie suivantes dans ma page produit:
167 186, 209 et 210
comprend tu?
désolé pour tous ces message.
merci pour ton aide
Dans mon test, j’ai placé mon produit dans une catégorie d’un niveau au-dessus sinon en effet ça n’affiche rien 😉
Bonjour Arnaud,
merci pour l’astuce, mais aussi pour toutes les autres qui rendent notre quotidien bien plus simple 😉
J’ai une question, je voudrais afficher les sous catégorie de la page en court sur mes fiche produit (pour faire du maillage interne).
Il faudrait donc afficher les sous catégorie de la catégorie du produit.
Une solution?
Merci
Bonjour Manu,
Merci pour le commentaire,
Et bien ça peut se faire et il faut utiliser la fonction qui affiche les sous-catégories dans la class Category.php et l’insérer dans la class Product.php puis ajouter la variable dans le controller de la page Produit.
Evidemment il faut faire un override pour chaque fichier modifié.
C’est donc la piste dans les grandes lignes, bon courage 🙂
Hum, cela semble complexe.
j’arrive à afficher la catégorie du produit en cours, mais pas les sous catégorie de la catégorie en cours.
je continu à chercher.
merci
Bonjour Manu,
Quelle est votre version de PrestaShop pour info ?
Je vais voir pour rédiger un futur billet sur ce sujet, restez connecté 😉
Bonjour, je suis en version 1.6.1.11
Je reste connecter bien sûr!
Merci pour votre aide et ces posts bien utile !
Bonjour Arno, vous pouvez utiliser un modificateur smarty notamment iteration pour afficher les 3 premières éléments. Pour le quatrième éléments, c’est un lien qui doit pointer sur une catégorie contenant toutes vos marques.
Bonjour Arnaud,
J’ai suivi votre démarche, mais je me retrouve face au même problème.
Lorsque je veux modifier le lien de ma sous catégorie, j’ai un message d’erreur: “Le champ link_rewrite est invalide.”
Lorsque je suis dans le module du menu, je peux seulement ajouter des liens dans la barre principale du menu et non dans les sous menus.
Je parle bien des sous menu et non du menu en lui même (peut être me suis je mal exprimé), c’est là que je veux modifier les liens.
Je suis allé voir dans le fichier footer.tpl, mais je n’ai pratiquement rien dedans (si vous le désirez, je peux vous faire un copier/coller de ce que j’ai dans ce fichier)
Merci
Cdt
Bonjour, envoyez-moi un mail détaillé via le formulaire svp 😉
Bonjour Cyril, la démarche : vous créez une catégorie / vous avez donc une url associée / vous éditez votre menu et vous ajoutez l’url de la catégorie / si c’est dans le pied de page, il faudra sûrement éditer le fichier footer.tpl
Arnaud,
Je viens de trouver l’id de ma catégorie, je l’ai modifiée dans le code, mais toujours rien ne se passe.
J’ai toujours l’affichage suivant dans mon footer :
Catégories (titre)
Shop
Au lieu d’avoir :
Catégories (titre)
Vêtements
Chaussures
Accessoires
Est ce que le fait que je sois sur Prestashop Cloud à une incidence sur le code ?
Merci de votre aide.
Chris
Il faut prendre l’id de la catégorie Shop, 8 par exemple, puis l’id de langue du français, par exemple 1. Ensuite on aurait le code :
[php]<ul>
{foreach Category::getChildren(8, 1) as $category}
<li><a href="{$link->getCategoryLink($category.id_category)}">{$category.name}</a></li>
{/foreach}
</ul>[/php]
Bonjour Christophe, utilisez le code fourni et insérez-le hors du module, directement dans le footer.tpl, ce n’est pas lié à un module 🙂