DEVELOPPEUR WEB FREELANCE Expert e-commerce Prestashop depuis 2010

10 févr.
2014

Afficher le nombre de produits dans les sous-catégories - Prestashop 1.5

Afficher le nombre de produits dans les sous-catégories - Prestashop 1.5

Suite au premier tutoriel réalisé pour la version 1.4 de Prestashop, j'ai reçu de nombreuses demandes pour un tutoriel adapté pour la version 1.5. Je vais donc détailler ici la procédure pour afficher le nombre de produits contenus dans vos sous-catégories sur la version 1.5 de Prestashop.

Les manipulations sont quasiment identiques à celles de la version 1.4, seul le code diffère un peu. Nous allons également ajouter le mot "produit" ou "produits" selon le nombre de produits contenus dans la catégorie.

Modification du fichier PHP

La première étape consiste à créer la variable utilisée pour récupérer le nombre de produits contenus dans chaque sous-catégorie.

 

Pour cela, rendez-vous dans le dossier classes de votre boutique Prestashop et ouvrez le fichier nommé Category.php.

 

Remplacez les lignes :

foreach ($result as &$row)
{
$row['id_image'] = file_exists(_PS_CAT_IMG_DIR_.$row['id_category'].'.jpg') ? (int)$row['id_category'] : Language::getIsoById($id_lang).'-default';
$row['legend'] = 'no picture';
}
return $result;

Par ces lignes :

foreach ($result as &$row)
{
$row['id_image'] = file_exists(_PS_CAT_IMG_DIR_.$row['id_category'].'.jpg') ? (int)$row['id_category'] : Language::getIsoById($id_lang).'-default';
$row['legend'] = 'no picture';
$result_products_nbr = Db::getInstance()->ExecuteS('
SELECT COUNT(ac.`id_product`) as totalProducts
FROM `'._DB_PREFIX_.'category_product` ac
LEFT JOIN `'._DB_PREFIX_.'product` p ON p.`id_product` = ac.`id_product`
WHERE ac.`id_category` = '.$row['id_category'].' AND p.`active` = 1');
$row['products_nbr'] = $result_products_nbr[0]['totalProducts'];
}
return $result;

 

Modification du fichier TPL

Nous allons à présent ajouter la variable que nous venons de créer au fichier tpl concerné pour que le résultat apparaisse sur la boutique.

 

Rendez-vous donc dans le dossier de votre thème et ouvrez le fichier nommé category.tpl.

 

Remplacez la ligne :

<a href="{$link->getCategoryLink($subcategory.id_category, $subcategory.link_rewrite)|escape:'htmlall':'UTF-8'}" class="cat_name">{$subcategory.name|escape:'htmlall':'UTF-8'}</a>

Par cette ligne :

<a href="{$link->getCategoryLink($subcategory.id_category, $subcategory.link_rewrite)|escape:'htmlall':'UTF-8'}" class="cat_name">{$subcategory.name|escape:'htmlall':'UTF-8'}</a> ({$subcategory.products_nbr} {if $subcategory.products_nbr > 1}{l s='products'}{else}{l s='product'}{/if})

Ici nous avons ajouté un petit code permettant d'afficher le mot "produit" ou "produits" en fonction du nombre de produits contenus dans la catégorie. Pensez à traduire ce mot dans l'onglet Traductions de votre back-office.

 

 

Forcer la compilation smarty pour la prise en compte des modifications

Lorsque vous effectuez des modifications dans vos fichiers tpl, la compilation smarty doit être active sinon vos modifications ne sont pas prises en compte. Vous pouvez régler l'activation de la compilation smarty dans l'onglet Préférences de votre back-office.

Auteur de cet article : Sabrina ROUSSEAU

Développeur web freelance spécialiste de la solution e-commerce Prestashop depuis 2010. Créatrice du site web Prestacrea ainsi que des produits qui y sont proposés.

COMMENTAIRES

3 commentaires

Christian

14/08/2014

Bonsoir,
Quand je modifie le fichier category.php j'ai l'erreur suivante Parse error: syntax error, unexpected 'accolade de fin' in /classes/Category.php on line 543

C'est l'accolade présente d'origine, juste après le code inséré, je ne peux pas la poster ici, pas de code html autorisé apparemment :(

Pouvez-vous m'aider ? Merci par avance.

Guillaume

29/08/2014

Quelqu'un aurait'il une solution pour la 1.6 ?

Merci d'avance !

Prestacrea

09/09/2014

Christian : Vous avez certainement fait une erreur en intégrant les lignes dans votre fichier category.php

Guillaume : Cette méthode fonctionne également sur la version 1.6 de Prestashop
Cet article a été rédigé il y a plus d'un an. Les commentaires sont fermés.