L’ensemble des champs de configuration disponibles depuis l’interface admin de Magento 2 peuvent également se piloter depuis le fichier app/etc/config.php. Cette fonctionnalité peut se révéler très utile pour embarquer sous Git des pré-configurations de projet.

Documentation officielle: Magento 2 DevDocs – config.php reference.

ATTENTION CAVEAT!: la pré-configuration de votre/vos sites via ce fichier config.php va désactiver les champs correspondants dans l’interface d’administration. Ceci veut dire que vous ne pourrez plus modifier les paramètres en question via le backoffice. Il faudra impérativement intervenir sur le fichier config.php à cet effet. Magento 2 propose un moyen de pré-configurer vos sites tout en laissant l’admin libre de faire des modifications après coup via le backoffice, mais la config n’est alors pas scriptée. Les changements s’opèrent directement en base de données. Pas pratique!

Pas de panique, il existe une solution pour Pré-configurer vos sites Magento 2 de manière scriptée tout en laissant l’admin libre de faire des modifications après coup via le backoffice.

Obtenir un fichier config.php de référence

Source: Export the configuration.

Un fichier config.php de référence vous permettra d’avoir sous les yeux la majeure partie des paramètres présents en admin. ATTENTION: il est conseillé de faire une copie de sauvegarde de votre fichier config.php initial car il sera écrasé par la commande ci-dessous! Exécuter la commande:

Vous pouvez ensuite renommer le fichier généré en config.default.php et y revenir ultérieurement pour consultation.

Pré-configurer vos sites Magento 2 de manière scriptée tout en laissant l’admin libre de faire des modifications après coup via le backoffice

Testé fonctionnel Magento 2.3.4!

Magento 2 prévoit une commande, agrémentée de quelques paramètres. Doc officielle: Magento 2 DevDocs – Set configuration values:

bin/magento config:set [–scope= »… »] [–scope-code= »… »] [-le | –lock-env] [-lc | –lock-config] path value

Cette commande consigne les directives de configuration en base de données, mais pour des raisons évidentes de portabilité il est tout-à-fait possible de l’exécuter depuis un script bash qui, lui, se révèle plus pratique à l’utilisation (versioning sous Git, déploiement des sites sans dump/restore de la base de donnés, …).

[A lire] Technique à appliquer en connaissance de cause!

Cette méthode n’est pas une méthode miracle et il convient de bien comprendre à quoi elle sert avant de la mettre en oeuvre. Vous allez, au premier déploiement de votre instance Magento 2, pouvoir paramétrer l’apparence graphique de votre site à l’aide d’un script plutôt qu’en faisant tout un tas de manipulations en backoffice. Ce script devra n’être lancé qu’une seule fois, au déploiement de votre/vos site(s). Ensuite, ce(s) dernier(s) vont vivre et le(s) admin(s) vont procéder à des modifications via le backoffice. Si vous relancez votre script après que des modifications aient été effectuées en backoffice sur des champs qui sont paramétrés dans ce premier, vous perdrez tout le bénéfice de ces dernières!

Il est important de bien comprendre que ce type de script permet juste de gagner du temps lors d’un premier déploiement ou en phase de développement lorsque plusieurs développeurs s’échangent du code.

Création d’un fichier init-theme.sh à la racine de votre projet Magento 2:

Cette directive empêche l’ouverture automatique d’une popup d’inscription à la newsletter (fonctionnalité qui vient avec de nombreux thèmes payants) à chaque ouverture de page:

Décryptage: mise en regard de la même directive dans un fichier config.php, la directive ci-dessus prend tout son sens.

Une méthode possible consiste ainsi à générer un fichier config.php de référence après avoir mis en place votre configuration via l’interface d’admin, puis à créer un script bash en regard de ce dernier.

Le fichier config.php auto-généré peut contenir beaucoup d’informations. Pour trouver rapidement celle qui vous intéresse, vous pouvez passer votre backoffice en anglais et regarder le libellé du champ qui vous intéresse. Dans notre exemple, il s’agit de « Show Newsletter Popup » qui se traduit par show_newsletter_popup dans le fichier config.php.

Il est à noter que certains champs sont accompagnés d’une coche/checkbox sur laquelle vous ne pourrez pas avoir la main via votre script.

Jouer votre script:

Tout d’abord, passer le script en exécutable:

…puis le jouer:

REMARQUE TRES IMPORTANTE: avant de voir les effets du script en front, il faudra impérativement vous connecter à l’interface d’admin et vous rendre dans Stores > Configuration [Settings] et activer à la main le bouton « Save Config ».

Les scopes pour une boutique simple (un seul ‘Store View’):

Magento 2 User Guide – Scope.

Modifie la valeur pour ‘Default Website’ et surcharge la valeur de ‘Default Config’:

Modifie la valeur pour ‘Default Store View’ et surcharge les valeurs de ‘Main Website’ et de ‘Default Config’: