Testé Magento 2.3 et 2.4

Comment changer, sans passer par l’interface d’administration mais dans le code source, le logo et surcharger le header et le footer des templates d’email transactionnels? Ressources officielles en ligne pour la gestion des emails transactionnels dans Magento 2:

Extension des styles LESS

L’extension des styles LESS se fait dans le thème. Chemin: app/design/frontend/MyVendor/mytheme/web/css/source/_email-extend.less.

RECHERCHER ou cibler un template d’email spécifique dans Magento 2

Il arrive, dans des projets complexes, que les emails sont éclatés en une multitude de fichiers, eux-mêmes consignés dans une multitude de modules. La méthode la plus simple pour trouver un template est de faire une recherche sur un bout de texte contenu dans l’email dans les fichiers au format CSV du code source.

Préparer l’image qui vous servira de logo

Première étape: voir ici comment préparer un logo pour les emails transactionnels dans Magento 2.

Votre fichier sera, de préférence au format PNG et son libellé sera logo_email.png.

Modifier le fichier app/etc/config.php

Puis exécuter la commande $ n98-magerun2 setup:upgrade $ n98-magerun2 app:config:import.

Surcharger le logo natif de Magento 2 par votre propre logo

Chemin du fichier source: vendor/magento/module-email/view/frontend/web/logo_email.png. Chemin du fichier de destination: app/design/frontend/MyVendor/myTheme/Magento_Email/web/logo_email.png.

Surcharger le header et le footer des templates d’email transactionnels dans Magento 2

Header

Chemin du fichier source: vendor/magento/module-email/view/frontend/email/header.html. Chemin du fichier de destination: app/design/frontend/MyVendor/myTheme/Magento_Email/email/header.html.

Footer

Chemin du fichier source: vendor/magento/module-email/view/frontend/email/footer.html. Chemin du fichier de destination: app/design/frontend/MyVendor/myTheme/Magento_Email/email/footer.html.

Afficher une image stockée dans un thème

Comme d’hab: rien dans la doc à ce sujet à part pour le logo et aucun code fourni sur les forums ne fonctionne… Faire comme ceci:

Une liste complète des variables par défaut exploitables dans les templates d’email transactionnels de Magento 2

edit: source officielle (toujours mieux) Email templates Variable Reference.

Source: A Complete List of Default Variables Used in Magento 2 Email Templates et la version PDF pour la postérité.

ATTENTION: il y a un souci de formattage des double quotes dans la doc officielle. Si cous copiez/collez ceci: {{config path=”general/store_information/name”}} dans votre code source, l’information ne sera pas récupérée. Il faut mettre ceci: {{config path="general/store_information/name"}}.

Bonus: header et footer par défaut pour l’ensemble des gabarits d’email

Test des emails transactionnels dans Magento 2

Dev tips #1: Avant de tester vos changements effectués dans les templates HTML ou les styles CSS/LESS, la seule commande à taper est la suivante (si vous êtes en mode developer):

Dev tips #2: La page de réinitialisation du mot de passe (fonctionnalité « mot de passe oublié? ») est une bonne manière de s’envoyer des emails transactionnels de test dans Magento 2.

  • mailtrap.io – un service de test d’emailings gratuit (50 envois/jour ou 500 envois/mois) qui permet d’afficher les emails en vues smartphones, tablettes et desktops, de voir le code source, etc… Fournit quelques outils pratiques pour le débug.
  • Supprimer les limites par défaut du nombre maximum d’envoi de requêtes pour changer son mot de passe (5 fois) et du temps minimum à patienter entre deux envois de requête d’un nouveau mot de passe (10 minutes): Magento 2 Forgot Password Says Too many password reset requests et la version PDF

Inclure des PHTML ou des layouts XML complets dans un email

Inclure des templates PHTML complets dans un email transactionnel dans Magento 2

Magento 2 not able to load phtml file in email template .html file. Pas la peine de doubler les slashes (testé fonctionne Magento 2.4).

Inclure des layouts XML complets dans un email transactionnel dans Magento 2

Un bon exemple dans le code source de Magento 2.