Surcharge de classes et controllers dans prestashop : un exemple complet

Prestashop 1.4Aujourd’hui, je mets en ligne une nouvelle série d’articles sur la solution e-commerce open-source Prestashop, dans laquelle je vais vous reparler de l’override de classes et de controllers dans prestashop 1.4 en vous présentant un exemple complet, mettant en oeuvre les 2 types d’override (classe et controller) et également une gestion de l’URL rewriting.

Pour cela , j’ai écrit un « long » tutoriel présentant une fonctionnalité à implémenter dans Prestashop (que je vous présente ci-dessous) et que j’ai séparé en 3 articles bien distincts.

Mais avant de rentrer plus en détail dans la technique, je vous propose de décrire simplement la fonctionnalité que je souhaite mettre en place sur mon Prestashop 1.4.

 

Lier les pages CMS aux Marques / Fabricants

Les marques ou fabricants dans Prestashop sont des entités administrables par le Back Office avec un nom, un logo, et une petite description associée. Cependant, cela n’est pas suffisant lorsque l’on a besoin de rajouter du contenu lié à ces marques, comme des pages de présentation etc … afin de travailler son contenu éditorial et par la même occasion son SEO.

D’autre part, Prestashop dispose d’une fonctionnalité CMS qui permet d’éditer des pages de contenu (administrables par le Back Office prestashop) et de les relier à des catégories CMS. Vous pourrez écrire autant de contenu éditorial que vous voudrez dans ces pages. Le seul problème de mon point de vue est qu’elles sont un peu « isolées » car il vous faudra les relier à la main depuis les pages de votre site pour y donner accès.

Nous disposons donc de 2 fonctionnalités intéressantes mais qui n’ont aucun lien / rapport entre elles.

Je vous propose de lier les pages CMS à nos marques pour avoir des pages Manufacturer comportant plus de contenu. (par exemple pour présenter l’historique de la marque, le métier, etc …)

Nous allons pour cela overrider leurs classes et controllers afin de les faire fonctionner ensemble.

Nous allons également faire en sorte qu’une page Marque (Manufacturer) affiche par défaut la première page CMS qui lui est rattachée au lieu du classique listing de produits. Sur chaque page CMS, nous afficherons les autres pages CMS du Manufacturer par le biais d’un menu dans la page et nous aurons également accès au listing produits par un lien (dans un onglet de la page).

Voici un schéma présentant la fonctionnalité :

Prestashop override Manufacturer

Voici maintenant un schéma de ce que la page Manufacturer (onglet produits) affichera :

Prestashop override manufacturer products

Voici comment nous allons procéder :

  1. Surcharge de la classe CMS et du controller CMSContollerCore
  2. Surcharge du controller ManufacturerControllerCore
  3. Surcharge de la classe Link pour changer l’URL rewriting des pages Marque


Vous pouvez répondre, ou faire un trackback depuis votre propre site web.

Donner votre avis