Magento : une plate-forme d'e-commerce en PHP Ajouter des modules sans toucher au code source

Rares sont les solutions de e-commerce gratuites possédant une véritable flexibilité. Que ce soit le design ou le code, la plupart des plates-formes de e-commerce telles que Virtuemart et OsCommerce permettent l'intégration de modules de paiement ou de livraison, mais il est impossible d'ajouter d'autres fonctionnalités sans modifier le code source de la solution.

Un noyau assurant une gestion dynamique des modules

Une gestion des interdépendances entre modules

Magento a tout de suite su intégrer une gestion 100% modulaire. Ainsi, le "cœur" de Magento (nommé Core) est lui-même entièrement composé de modules. De mémoire, seule la solution e-commerce E-pages propose une telle modularité mais elle n'est pas gratuite.

Les modules fonctionnent comme suit : Magento charge les modules déclarés en vérifiant la présence des fichiers XML dans le répertoire app/etc/modules/. Il va ensuite charger les fichiers de configuration de chaque module. Ces fichiers de configuration peuvent en outre déclarer de nouveaux fichiers XML de layout ou la surcharge d'une classe existante.

magento propose une architecture modulaire
Magento propose une architecture modulaire © Magento

Magento procède alors à une réunification de tous les fichiers XML de même type. Par exemple les fichiers XML relatifs aux layout seront combinés et traités ensemble. Ainsi, on peut modifier tous les éléments existant de Magento sans toucher aux sources originales.

Une gestion des évènements

Afin de pouvoir intervenir sur des actions, Magento propose une gestion des évènements. Il est possible de s'inscrire à un évènement et d'exécuter le code voulu dès que l'évènement est levé. Le wiki de Magento décrit bien le mécanisme ainsi que la liste des évènements disponibles dans le Core.
Il est, de plus, tout à fait possible de créer de nouveaux évènements dans un module tiers.

Ce qui nous amène au dernier point important dans la gestion des modules : la possibilité de modifier un module. En effet, Magento gère les interdépendances entre modules. La souplesse apportée par ce système permet d'envisager la modification d'un module tiers via un autre module.