Bonjour @antoineshop et @mathieulyon,
@mathieulyon a tout à fait raison sur le diagnostic. Sur PrestaShop 1.7.3.4, les variables Smarty dans les e-mails sont gérées par la méthode Mail::send(). Pour injecter des variables personnalisées dans tous vos e-mails transactionnels sans modifier directement le core (ce qui serait écrasé), la meilleure approche est de créer un override de la classe Mail.
Voici comment vous pouvez procéder :
- Créez un override de
Mail.php :
Dans le fichier override/classes/Mail.php (créez le dossier et le fichier s'ils n'existent pas), ajoutez le code suivant. Cet override permet d'ajouter vos variables personnalisées à $template_vars avant l'appel à la méthode send parente.
// Fichier: override/classes/Mail.php
class Mail extends MailCore
{
/**
* @see MailCore::send()
*/
public static function send(
$id_lang,
$template,
$subject,
- Mettez à jour les variables dans vos templates d'e-mails :
Une fois l'override en place et les caches de PrestaShop effacés (via Paramètres Avancés > Performances), vous pourrez utiliser vos nouvelles variables dans mails/themes/classic/core/header.tpl (et d'autres) comme ceci :
<style type="text/css">
body { background-color: #f6f6f6; font-family: sans-serif; }
.header-logo { background-color: #{$shop_primary_color|default:'ffffff'}; padding: 10px 0; }
.shop-name { font-family: '{$shop_accent_font}', sans-serif; color: #333333; }
</style>
- Pour le logo et les couleurs générales :
Le logo de l'e-mail peut être géré directement via Apparence > Thème et Logo > Onglet E-mail dans votre Back Office. Pour les styles CSS plus simples, vous pouvez modifier mails/themes/classic/css/mail-theme.css. Cependant, pour des éléments dynamiques comme vos couleurs personnalisées qui doivent être injectées, l'override est la solution la plus robuste pour votre version de PrestaShop.
N'oubliez pas de vider le cache de PrestaShop après avoir créé ou modifié un fichier d'override pour qu'il soit pris en compte.