La modularité est probablement l’une des fonctionnalités apportées par Magento la plus intéressante, à la fois pour le marchand et pour l’intégrateur.
Cet article est le premier que je consacre aux modules, c’est un vaste sujet sur lequel il y a beaucoup à dire.
Dans ce premier article je vais introduire les modules, leur capacités et leurs limites.
1. Introduction
Au delà de Magento les plateformes e-commerce ont toutes été confronté à un problème, peut importe le nombre de fonctionnalités proposées, il est impossible de satisfaire les besoins spécifiques de chaque site e-commerce avec une plateforme générique.
L’intégrateur doit alors modifier la plateforme et l’adapter aux besoins. Ces modifications peuvent être faîtes de différentes manières selon les plateformes. On distingue 2 types de plateformes celles qui sont modulaires et celles qui ne le sont pas.
Quand on parle de plateforme modulaire on sous-entend surtout un code qui est modulable, en effet toute solution e-commerce possède son code qui est le moteur original de la plateforme, dans Magento on l’appelle le core.
Personnaliser la plateforme implique donc de pouvoir modifier le moteur afin qu’il réponde a nos besoins. Ce travail est plus ou moins facilité par la flexibilité que va vous apporter la plateforme choisie et est donc l’un des critères dans le choix d’une solution e-commerce.
2. Les ancêtres
Magento s’étant positionné comme un concurrent direct à OsCommerce je m’autorise un encart au sujet des modules sur cette plateforme.
Les gens qui ont travaillé avec OsCommerce l’on connu : (voix venu d’outre-tombe)l’enfer des contributions.
Plus sérieusement, OsCommerce est l’exemple parfait d’une solution qui n’est presque pas modulaire, je dis presque car elle l’est tout de même concernant les modules de paiement et de livraison.
Installer une extension sur OsCommerce était long et fastidieux. A la longue on se retrouvait avec un code exotique qui n’avait plus rien à voir avec le code d’origine.
Pire, c’est un cercle vicieux car plus vous modifiez les sources plus il est difficile d’y apporter de nouvelles modifications. Plus on modifie et plus la probabilité de bug est grande, et surtout en cas de problème grave il y a un risque de se retrouver dans une impasse technique : impossible de diagnostiquer un problème car le code est devenu un véritable capharnaüm.
3. Ce qu’apporte Magento
On le sait Magento est basé sur une architecture Zend framework, autrement dit Magento respecte un standard créé par Zend qui n’est autre que le créateur de PHP4 et 5.
Concrètement : Magento est modulaire.
Encore plus concret : le Core est lui même constitué de modules, si je devais donner un exemple ce serait le module de base de Magento qui s’apelle « Core » que vous trouverez dans le répertoire /app/code/core/Mage/Core
Cette architecture à base de modules implique qu’on pourra en rajouter d’autres. L’avantage des modules étant qu’ils se greffent automatiquement aux autres modules sans que vous ayez besoin de toucher au Core.
Les principaux avantages sont de rester compatibles avec des mises à jours ultérieure et d’éviter au Core de se transformer en une grosse tumeur à la croissance incontrôlable et ingérable sur la durée.
Mais Magento apporte également une séparation Code/design qui permet de séparer les traitements de l’affichage, avec d’autres avantages comme la gestion multi-design.
En plus Magento fourni un outil qui facilite le déploiement des modules au travers Magento Connect. Cette plateforme permet non seulement de référencer tous les modules existants mais également d’automatiser le processus d’installation et de mise à jour des modules.
4. Ce que peuvent faire les modules
Voici une liste non-exhaustive de ce peuvent faire les modules
- Apporter de nouvelles fonctionnalités
- Modifier des fonctionnalités existantes
- Ajouter un template et/ou une skin
- Enrichir l’API (WebService)
- Intercepter des évènements (enregistrement d’une commande, création d’un produit, etc …)
5. Et donc ?
En fait Magento nous offres une boite à outils formidable, les développeurs avec qui j’ai eu l’occasion de discuter sont unanime sur ce point : pour du développement Magento est un modèle du genre, efficace et fonctionnel et c’est ce qu’on lui demande.
En revanche exit les bidouilles, avec Magento on ne développe plus de l’approximatif car une connaissance sérieuse de framework est nécessaire, elle peut s’acquérir à l’usage mais pour ceux qui se lance compter 2 mois de grosses galères si vous n’avez jamais mis les pieds dans Magento et/ou Zend.
Ajoutez à ça que le code exploite pleinement la POO (programmation orientée objet) fournie par PHP il est donc important de maîtriser cette forme de programmation puisque Magento use et abuse des classe, héritage, surcharge, il ne manque que le polymorphisme qui n’existe pas en PHP5.
J’ai pour habitude de dire que Magento n’est réellement accessible qu’aux ingénieurs en développement, c’est un cliché bien sûr car l’expérience et la débrouillardise/motivation peut remplacer le diplôme, mais l’idée est là.
Pour l’anecdote j’avais un jour discuté avec le gérant d’un site e-commerce qui m’avait confié que ses devs, à l’aise dans OsCommerce, se trouvèrent complètement à la rue avec Magento et il du faire appel à un prestataire spécialisé, pour autant il ne regrettait pas son choix car Magento est un excellent outil une fois en place.
6. Ensuite …
J’écrirai d’autres articles dans lesquels je rentrerai plus en détail sur la conception des modules, peut être plus sous forme de tutoriaux avec des exemples de codes (merci Philippe pour l’ajout de la gestion du code dans le blog), en tout cas je compte spécialiser chaque article autour d’un exemple concret de réalisation.
avril 21st, 2009 at 18 h 16 min
Bon article !
Sur Fragento nous sommes en train de finaliser un Guide du Développeur.
Avis : tout développeur désireux d’y contribuer est bienvenue
!
avril 23rd, 2009 at 11 h 16 min
Si je trouve du temps et des éléments à apporter au guide j’y mettrais ma touche