Prestashop : afficher le nom d’une catégorie grâce à son ID

Il est parfois intéressant sous Prestashop de récupérer le lien et le nom d’une catégorie. Il est possible de récupérer l’url d’une catégorie quand on possède l’ID sans trop de difficulté mais il est plus difficile de récupérer son nom. Disons que de base, Prestashop ne le permet pas. Il faut donc une fois de plus adapter son core. Voici une solution pour la version 1.6.0.14 dont je dispose actuellement.

Dans un premier temps, créez le fichier FrontController.php dans le dossier prestashop/override/classes/controller/. Collez-y le contenu suivant :

<?php
    /**
     *
     * OVERRIDE FrontControllerCore
     */

    class FrontController extends FrontControllerCore
    {
        public static function getCategoryName($id)
        {
            $category = new Category($id, Context::getContext()->language->id);
            return $category->name;
        }
    }

Rafraîchissez le cache et assurez-vous d’avoir les lignes ci-dessous dans le fichier class_index.php situé dans prestashop/cache/.

'FrontController' => 
    array(
        'path' => 'override/classes/controller/FrontController.php',
        'type' => 'class',
        'override' => false,
    ),

Vous pouvez maintenant appeler cette fonction à partir de n’importe quel .tpl de votre thème pour récupérer le nom d’une catégorie avec son ID de cette façon (je l’ai fait pour la catégorie de ma boutique dont l’ID est 4, à adapter dans votre cas bien entendu) :

{FrontController::getCategoryName(4)}

Pour aller plus loin et récupérer le lien ainsi que son nom :

<a href="{$link->getCategoryLink(4)|escape:'html':'UTF-8'}">
    {FrontController::getCategoryName(4)}
</a>
Prestashop : accepter les numéros de téléphone internationaux
Prestashop : comment dupliquer un module

4 Comments on “Prestashop : afficher le nom d’une catégorie grâce à son ID”

  1. Hello,

    Une petite remarque sur « Rafraîchissez le cache et assurez-vous d’avoir les lignes ci-dessous dans le fichier class_index.php situé dans prestashop/cache/.’
    Le plus simple pour le cache de l’autoload c’est de tout simplement supprimer ce fichier cache/class_index.php . Prestashop va du coup être obligé de le reconstruire ;)

  2. Bonjour merci pour ce tuto, mais j’ai bien suivi le tuto mais j’ai ce message Call to undefined method FrontController::getCategoryName()

    1. Bonjour,
      La surcharge n’a pas été prise en compte.
      Deux solutions :
      – soit le fichier class_index.php n’a pas été supprimé
      – soit dans l’onglet « Perfomances », les surcharges sont désactivées

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *