Développer de nouvelles fonctionnalités dans Magento Principe de séparation des modules

Pour autoriser l'ajout de fonctionnalités avec la meilleure garantie de stabilité, Magento stocke les modules dans trois dossiers :

 core. Le dossier core contient les modules livrés par défaut qui constituent le socle de Magento. Nous y trouvons le noyau (core) et les modules métier.

 community. Le dossier community accueille les modules communautaires, proposés par Magento Connect ou des éditeurs d'extensions.

 local. Le dossier local est réservé aux modules développés spécifiquement pour une plate-forme Magento. C'est donc dans ce dossier que seront placées vos propres fonctionnalités.


ces bonnes feuilles sont issues de l'ouvrage 'magento, pratique du e-commerce
Ces bonnes feuilles sont issues de l'ouvrage "Magento, Pratique du e-commerce avec Magento" de Christophe Le Bot, publié aux éditions Pearson en 2011. © Pearson

Le placement d'un module dans l'un de ces trois dossiers n'a rien d'anodin. Magento charge les modules dans cet ordre :

 modules du dossier local ;

 modules du dossier community ;

 modules du dossier core.

Cela permet de gérer proprement la surcharge de fonctionnalités. Dans la pratique, les fonctionnalités locales ont donc une priorité sur celles proposées par des extensions communautaires qui modifient, à leur tour, le comportement standard de Magento.

Un tel système a beaucoup d'avantages :

 Il favorise une approche propre du développement.

 Il permet d'isoler les développements spécifiques.

 Il autorise l'ajout de fonctionnalités à peu de frais, en modifiant légèrement le comportement d'un module existant.

 Il garantit la stabilité du site lors d'une mise à jour de Magento.


Deux dossiers pour gérer les thèmes

L'aspect et le comportement des interfaces Web de Magento sont définis par les thèmes. Deux dossiers principaux gèrent les thèmes :

 app/design. Il contient les fichiers XML de description des interfaces (les layouts) et les modèles de pages et de blocs (les templates). Il peut éventuellement contenir des fichiers de configuration.

 skin. Il contient les fichiers appelés directement par les navigateurs Web (images, feuilles de styles CSS, scripts JavaScript, etc.).


La séparation design/skin apporte une meilleure protection de l'application : l'accès au dossier design qui contient des codes sources en PHP, est interdit aux navigateurs Web, à l'inverse du dossier skin, totalement ouvert (requêtes directes).

Sous ces deux dossiers, Magento attend une structure très précise. Chaque thème est associé à une interface qui est, elle-même, associée à un type d'interface (adminhtml, frontend ou install).