M

Suivez nous

Beginner’s Guide Magento #01: Structure et grands principes

Qu’on se le dise, la première fois qu’on ouvre un projet magento, on a qu’une envie : partir le plus loin possible du PC ! Du XML, des dossiers dans tout les sens, digne d’un film de James Wan ! Mais pas d’inquiétude. Dans cette série, je vais vous accompagner pas à pas comme si je m’asseyais à côté de vous pour vous expliquer calmement ce que vous avez sous les yeux.

L’objectif de ce premier article est simple. Vous offrir une vision claire de la structure de Magento 2, de ses grands principes et des fichiers que vous rencontrerez dès vos premières minutes sur un projet.

Comprendre la logique modulaire de Magento 2

Magento est un framework e-commerce entièrement modulaire. Cela signifie que chaque fonctionnalité, même la plus basique, existe dans un module dédié. C’est ce découpage très fin qui peut impressionner au début, mais c’est aussi ce qui rend Magento puissant et extensible.

Le rôle des modules

Un module Magento est un ensemble organisé de fichiers qui apportent une fonctionnalité précise. Magento ne fonctionne que grâce à l’agrégation de dizaines de modules core, auxquels vous ajoutez les modules vendor et vos modules personnalisés.

Un module contient généralement :

  • un fichier etc/module.xml qui déclare son existence
  • un fichier registration.php qui l’enregistre auprès du framework
  • éventuellement des répertoires etc, Model, View, Block, Controller, Plugin, Observer, etc.

Vérifier les modules installés

Une commande bien pratique pour explorer un projet :

bin/magento module:status

Elle vous permet de visualiser les modules activés et désactivés. Cela vous donne immédiatement une idée de la taille fonctionnelle du projet.

Comment Magento charge les modules

Magento lit d’abord tous les module.xml, reconstruit une liste ordonnée avec les dépendances et active les fichiers de chaque module dans un ordre précis. Cet ordre impacte notamment la surcharge des fichiers view, des préférences ou des plugins.

Explorer l’arborescence et les dossiers essentiels

Lorsque vous chargez le projet la première fois, vous voyez une dizaine de dossiers à la racine. Voici ceux que vous devez comprendre immédiatement.

app

Sans surprise, c’est là que vit votre application.

  • app/code contient les modules custom de votre entreprise.
  • app/design contient vos thèmes et vos overrides de fichiers view.
  • app/etc contient la configuration globale, notamment config.php et env.php.

vendor

Il s’agit de la partie gérée par Composer. Vous y trouverez Magento ainsi que toutes les dépendances tierces. On ne modifie jamais ce répertoire manuellement.

Pour mettre à jour les packages :

composer update

Pour installer un nouveau module :

composer require <package>

pub

C’est la partie publique du projet. Les assets compilés, les images et les fichiers générés sont exposés ici. En production, c’est généralement ce dossier qui est servi par Nginx ou Apache.

generated

Magento génère ici énormément de classes lors de la compilation, notamment les factories, proxies et interceptors. Si vous développez, il arrive que vous deviez vider ce dossier :

rm -rf generated/*

var

Logs, cache, rapports, sessions. Vous viendrez souvent dans ce répertoire.
Pour vider le cache :

bin/magento cache:flush

Comprendre Composer et le système de dépendance

Composer est le cœur du fonctionnement moderne de Magento 2. Sans Composer, vous ne pouvez pas installer Magento proprement ni gérer de projet professionnel.

Pourquoi Composer est indispensable

Composer fait trois choses essentielles :

  • il installe Magento et tous ses composants
  • il versionne les dépendances dans composer.lock pour que toute l’équipe utilise les mêmes versions
  • il génère l’autoload PSR 4 qui permet à Magento de charger automatiquement toutes les classes

Le fichier composer.json

Vous le lirez très souvent. Il contient les dépendances des modules, les scripts exécutés après installation et la configuration du projet.
Un extrait typique :

{
    "require": {
        "magento/product-community-edition": "2.4.8",
        "php": "^8.3"
    }
}


3.3 Installer Magento via Composer

Avant toute installation de Magento avec Composer, vous devez disposer de vos clés d’authentification Adobe Commerce. Ces clés permettent d’accéder au dépôt privé repo.magento.com, indispensable pour télécharger le core Magento et les modules officiels.
Vous pouvez obtenir ces clés ici :
https://experienceleague.adobe.com/fr/docs/commerce-operations/installation-guide/prerequisites/authentication-keys

Une fois vos clés générées et configurées avec Composer, vous pouvez installer Magento depuis zéro avec la commande suivante :

composer create-project --repository-url=https://repo.magento.com/ magento/project-community-edition .

Composer installera alors Magento, toutes ses dépendances et préparera l’arborescence de votre projet.


Magento peut sembler massif au premier abord, mais une fois que vous comprenez sa structure et la logique des modules, tout devient beaucoup plus lisible. Ce premier épisode vous donne les bases nécessaires pour évoluer dans un projet, comprendre l’arborescence et savoir où regarder quand vous démarrez un développement.

Dans le prochain article de cette série, nous verrons comment fonctionne la configuration XML, comment Magento résout les classes via DI et comment commencent réellement les premiers développements. Vous pourrez ainsi entrer dans la mécanique interne du framework sans appréhension.
Et si vous voulez lancer rapidement et efficacement votre premier projet Magento 2 en local, pensez à utiliser Warden !