Identifier la Catégorie

Écrit par Mario SAM

Cette publication n’est pas une classe sur les catégories, mais je vais prendre quelques conseils afin que vous ne créiez pas de codes frontend inutiles, refaites les fonctions natives que le système offre déjà.

Il est donc très important que vous connaissiez bien le système avant de commencer à créer des modules et des fonctions qui existent déjà.

Paramètres du backend

Lorsque vous accédez à une catégorie, des dizaines d’informations peuvent être configurées, excluant ainsi la nécessité de créer des codes à vérifier (si la catégorie X le fait, si la catégorie Y la modifie).

Les choses qui peuvent être effectuées par backend:

- Supprime la catégorie du menu de navigation mais reste actif dans le système;
- Laissez chaque catégorie une couleur (en changeant la conception);
- Inclure des blocs personnalisés (comme des bannières);
- Modifier l'ordre d'affichage des produits dans la liste;
- Ajoutez (ou supprimez) les blocs dynamiques (tels que le panier ou la newsletter) à partir du modèle;
- Ajouter une image à la catégorie (normale et miniature);
- Personnaliser SEO indidivement (par catégorie);

Bien sûr, vous pouvez également faire d’autres choses, mais ce sont certaines que vous pouvez configurer sans avoir à insérer une seule ligne de code dans le modèle.

Modification d’autres éléments

Supposons que vous souhaitez modifier un élément très spécifique de la page lors de l’accès à une catégorie particulière. (il est difficile de donner un bon exemple, car presque tout peut être fait par le backend).

Lorsque vous accédez à une catégorie, le système enregistre dans l’initialisation de cette catégorie certaines informations, comme vous pouvez le voir dans:

app > code > core > Mage > Catalog > controllers > CategoryController.php

Dans la méthode _initCatagory() le code qui enregistre la variable contient des informations sur la catégorie:

Mage::register('current_category', $category);

Ensuite, dans votre modèle, vous pouvez récupérer cette information avec le code:

Mage::registry('current_category')->getName();

Ce code peut être utile lorsque vous devez associer plusieurs conditions en même temps, par exemple: si la catégorie est X, et le panier est avec les produits Y, et le client provient de Groupe W, alors la page devrait avoir Z.

D’autres informations que vous pouvez obtenir du registre:

- getDescription();
- getName();
- getUrlPath();
...J'ai compté 33 attributs disponibles...

Sur les pages hors catégorie, ce code ne fonctionne pas (retournez null).

Et quand vous n’avez pas de registre?

Mais toutes les pages n’ont pas de registre au début de la classe. Alors, comment pouvons-nous récupérer la catégorie de produits dans la liste de la page d’accueil?

Voyons un exemple, alors ouvrez le fichier phtml responsable du chargement de votre liste de produits – si vous ne savez pas quel fichier vous utilisez, lisez la publication: Déboguer dans Frontend.

Si vous ne savez pas comment afficher les produits sur la page d’accueil, lisez la publication: Featured Produits sur la page d’accueil. Dans cet exemple, j’utiliserai le fichier new.phtml situé à:

app > design > frontend > base > default > template > catalog > product > new.phtml

N’oubliez pas de ne pas modifier les fichiers dans base/default, faites toujours une copie sur default/default ou votre template/theme personnalisé.

Dans ce cas, nous utiliserons l’association entre les produits et les catégories (qui est N à N). Et pendant que le code produit un produit par produit pour l’afficher sur l’écran, nous prendrons pour récupérer la catégorie de chaque produit répertorié.

/* Charge toutes les catégories auxquelles appartient ce produit */
$cats = Mage::getModel('catalog/product')->load($_product->getId())->getCategoryIds();
/* Charge le nom de la catégorie en entrant la catégorie id q a été chargé par le produit */
echo Mage::getModel('catalog/category')->load($cats[1])->getName();

Ajoutez simplement ce code php à l’intérieur de la foreach, juste en dessous du nom du produit et vous verrez le résultat.

Exemple

Ainsi, avec le code ci-dessus, vous avez un point de départ pour de nombreuses variantes, vous pouvez jouer le nom de la catégorie dans une variable pour faire des comparaisons et prendre des décisions de présentation selon la catégorie.

Un produit peut être associé à plusieurs catégories, donc getCategoryIds() renvoie un tableau d’objets, et c’est à vous de décider quelle catégorie vous Voulez charger.

Succès!

L'auteur

Mario SAM

En attendant qu'une opportunité se présente de m'installer en France, je continue d'aider à distance.