Étiquette : config.php

[Magento 2] Ajouter des paramètres de configuration des thèmes de la table core_config_data au fichier config.php

Dans le cas d’un site qui dispose de plusieurs store views (un Magento 2 multi-sites) la commande app:config:dump ne réalise pas un dump complet de la configuration faite en Admin de l’ensemble de vos sites. Le fichier config.php généré ne contient que les informations du scope Default Config (mon exemple ci-dessous):

La valeur de la clé theme_color est pourtant redéfinie pour chacun de mes store view!

Nous pouvons compléter ce fichier config.php à la main en allant récupérer les informations manquantes en base de données, dans la table core_config_data.

Dans l’illustration ci-dessus, j’ai par exemple effectué une recherche sur une valeur de la clé theme_color (qui représente un champ en BO) qui n’a pas été dumpée via la commande app:config:dump.

Pour répercuter ces informations dans le fichier app/etc/config.php, je me suis servi du scope (stores) et du path (themecore/general/primary_color/theme_color) stockés dans la table pour reconstituer le chemin au bon endroit:

[Magento 2] La configuration de votre site de manière scriptée via le fichier config.php

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’:

[Magento 2] Afficher/masquer des fonctionnalités ou des modules depuis les layouts XML ou le fichier app/etc/config.php

Un grand nombre de fonctionnalités de Magento 2 peuvent s’activer/désactiver depuis un fichier layout XML dans le code source. Depuis le fichier app/design/frontend/<Vendor>/<theme>/Magento_Theme/layout/default.xml de votre thème, par exemple. En voici une liste non exhaustive:

Désactiver la fonctionnalité de comparaison produit dans Magento 2

Testé fonctionnel Magento 2.3. Source: Magento 2: Safe and easiest way to disable Compare products & Wishlist Module.

Dans le fichier app/design/frontend/<Vendor>/<theme>/Magento_Theme/layout/default.xml de votre thème, ajouter ceci:

Désactiver le module wishlist (produits favoris) dans Magento 2

Testé fonctionnel Magento 2.3. ATTENTION: erreurs PHP en front après un cache:clean avec un thème enfant du thème Supro. Peut se produire avec d’autres thèmes. Dans ce cas, se rabattre sur cette solution.

ATTENTION: lorsque vous désactivez des modules, veillez à exécuter la commande $ cache:clean de Magento 2 et à rafraîchir votre front pour vérifier que vos modifications passent sans générer d’erreurs.

Dans le fichier app/etc/confing.php repérer les trois modules Magento_Wishlist, Magento_WishlistAnalytics, Magento_WishlistGraphQl et les passer à 0 comme ceci:

Note: il est également possible de désactiver un module Magento 2 via une commande $ module:disable <nom_du_module>. En exécutant cette commande, le fichier config.php sera mis à jour automatiquement.

Supprimer la fonctionnalité wishlist (produits favoris) dans Magento 2

Testé fonctionnel Magento 2.3.

Préférer la solution ci-dessus si elle fonctionne, car elle permet une réactivation plus rapide de la fonctionnalité.

Dans le fichier app/design/frontend/<Vendor>/<theme>/Magento_Theme/layout/default.xml de votre thème, ajouter ceci:

De la sidebar (dans le compte client par exemple)

Essayer d’abord juste avec le 1er:

Ce n’est pas fini! Il vous faudra ensuite trouver le ou les templates PHTML qui contiennent des résidus de la fonctionnalité Wishlist qui ne peuvent être retirés via un fichier layout XML. Dans le thème Luma, le template contient les classes action towishlist sur un élément a. Dans le thème Supro, le markup HTML <div class="top-wishlist">.

Désactiver les avis et les notes produit (reviews & rating)

Testé fonctionnel Magento 2.3.

Dans le fichier app/design/frontend/<Vendor>/<theme>/Magento_Theme/layout/default.xml de votre thème, ajouter ceci:

Supprimer la navigation par filtres dans la liste produits

Masquer le titre principal d’une page

Afficher/masquer des entrées du menu en sidebar du compte client

[Magento 2] Ajouter, déplacer, supprimer des entrées dans le menu de navigation du compte client en sidebar.

Afficher/masquer l’encart reorder en sidebar et l’encart dernières commandes du dashboard client

Dans app/design/frontend/MyVendor/mytheme/Magento_Customer/layout/customer_account_index.xml: