Configuration multi-boutique et multilingue
Order Payment Reminders Pro stocke le contenu des rappels, les variables personnalisées et les modèles d'e-mail séparément pour chaque boutique et chaque langue, afin que vos clients reçoivent toujours un rappel rédigé dans leur propre langue depuis la bonne boutique.
Disponible depuis la v1.0.0
Vue d'ensemble
Chaque message de rappel que vous créez dispose d'un objet et d'un corps pour chaque langue active de votre installation PrestaShop. Lorsque la tâche cron quotidienne s'exécute, elle identifie la langue utilisée par le client lors de sa commande et envoie la version correspondante du message. Si aucune traduction n'existe pour cette langue, le rappel est ignoré pour cette commande — il est donc important de renseigner toutes les langues actives avant la mise en production.
Les variables personnalisées suivent le même fonctionnement par boutique : une variable nommée {bank_details} dans votre boutique espagnole peut contenir un contenu différent de la même variable dans votre boutique française. Cela permet à chaque boutique d'inclure ses propres coordonnées bancaires, adresses de contact ou tout autre texte spécifique à la boutique, sans avoir à créer des messages de rappel distincts.
Les paramètres globaux — tels que le mode test, les règles d'annulation automatique, la clé de sécurité cron et le modèle d'enveloppe d'e-mail — sont partagés entre toutes les boutiques de votre installation. Vous les configurez une seule fois et ils s'appliquent partout.
Le contexte de boutique dans lequel vous vous trouvez lorsque vous ouvrez la page de configuration du module détermine les données que vous voyez et modifiez. Travailler dans le mauvais contexte de boutique est la source de confusion la plus fréquente dans les configurations multi-boutique.
Configuration
Changer vers le bon contexte de boutique
Avant de configurer les messages ou les variables pour une boutique spécifique, assurez-vous d'être dans le contexte de cette boutique :
- Connectez-vous à votre Back Office.
- Utilisez le sélecteur de boutique dans la barre supérieure (le menu déroulant portant le nom de votre boutique ou « Toutes les boutiques »).
- Sélectionnez la boutique spécifique que vous souhaitez configurer — et non un groupe de boutiques ni Toutes les boutiques.
- Accédez à Modules > Gestionnaire de modules et cliquez sur Configurer pour Order Payment Reminders Pro.
Les messages de rappel que vous créez ou modifiez, ainsi que les variables personnalisées que vous ajoutez, sont enregistrés pour la boutique active au moment de la sauvegarde. Si vous êtes dans le contexte « Toutes les boutiques », le contenu des messages est écrit dans toutes les boutiques du groupe de boutiques actuel. Vérifiez toujours le sélecteur de boutique avant d'enregistrer.
Traduire un message de rappel
Chaque formulaire de message de rappel contient une barre d'onglets de langues au-dessus des champs Objet et Message. Cliquer sur le drapeau ou le nom d'une langue bascule le champ vers cette langue sans perdre le contenu déjà saisi pour les autres langues.
- Ouvrez la page de configuration du module dans le bon contexte de boutique.
- Cliquez sur Ajouter un nouveau message ou cliquez sur l'icône Modifier d'un rappel existant.
- Le formulaire s'ouvre avec la langue par défaut du Back Office sélectionnée.
- Renseignez l'Objet et le Message pour cette langue.
- Cliquez sur un autre onglet de langue — par exemple, ES pour l'espagnol.
- Renseignez l'Objet et le Message en espagnol.
- Répétez l'opération pour chaque autre langue active affichée dans la barre d'onglets.
- Cliquez sur Enregistrer.
Le module requiert un objet non vide et un corps de message non vide pour chaque langue active. Si vous laissez l'un ou l'autre champ vide pour une langue active, l'enregistrement est bloqué avec l'erreur : « Impossible d'enregistrer. L'objet de l'e-mail pour [langue] est vide. » Les langues inactives peuvent avoir un contenu vide.
Traduire le modèle d'e-mail
L'enveloppe HTML de l'e-mail — la mise en page externe qui entoure chaque message — est également déclinée par langue et se configure dans l'onglet Modèle d'e-mail du panneau de configuration.
- Accédez à Modules > Gestionnaire de modules > Order Payment Reminders Pro > Configurer.
- Cliquez sur l'onglet Modèle d'e-mail.
- Une barre d'onglets de langues apparaît au-dessus de la zone d'édition. Sélectionnez le premier onglet de langue et modifiez le modèle.
- Passez à chaque onglet de langue supplémentaire et fournissez l'enveloppe traduite.
- Cliquez sur Enregistrer.
Le modèle est enregistré sous forme de fichier HTML sur le disque à l'emplacement mails/{iso_code}/wiretransferreminder.html — par exemple, mails/fr/wiretransferreminder.html pour le français et mails/es/wiretransferreminder.html pour l'espagnol.
Conservez toujours les balises
{wr_title}et{wr_message}dans chaque version linguistique du modèle. Les supprimer entraîne la disparition de l'objet et du corps du rappel dans l'e-mail envoyé.
Configurer les variables personnalisées par boutique
Les variables personnalisées sont stockées avec l'identifiant de la boutique, de sorte que chaque boutique gère son propre ensemble. Pour configurer des variables par boutique :
- Vérifiez que le sélecteur de boutique affiche la bonne boutique.
- Accédez à la section Variables personnalisées de la configuration du module.
- Ajoutez ou modifiez des variables. Chaque enregistrement est écrit dans la boutique actuellement active.
- Changez de boutique dans le sélecteur et répétez l'opération pour les variables qui diffèrent entre les boutiques.
Si deux boutiques partagent des valeurs de variables identiques, vous devez quand même ajouter la variable séparément pour chaque boutique. Les variables ne sont jamais copiées automatiquement d'une boutique à l'autre.
Paramètres : globaux ou par boutique
| Paramètre | Clé de config | Portée | Remarques |
|---|---|---|---|
| Clé de sécurité cron | wr_cron_key | Global | Une seule clé pour toute l'installation. La modifier invalide toutes les URL cron existantes dans toutes les boutiques. |
| Cache du répertoire admin | wr_admin_dir | Global | Mis en cache automatiquement. Utilisé par le contrôleur cron pour générer les URL Back Office correctes en contexte cron. |
| Annuler les commandes | wr_cancel_orders | Global | Active ou désactive la fonctionnalité d'annulation automatique pour toutes les boutiques. |
| Annuler après N jours | wr_cancel_days | Global | Nombre de jours avant l'annulation d'une commande impayée. S'applique à toutes les boutiques. |
| Mode test activé/désactivé | wr_test_mode | Global | L'activation du mode test affecte toutes les boutiques. Désactivez-le avant la mise en production. |
| Affichage du mode test | wr_test_mode_output | Global | Indique si la sortie de test est affichée à l'écran. |
| Adresse e-mail de test | wr_test_email | Global | Reçoit tous les e-mails de test, quelle que soit la boutique à laquelle appartient la commande. |
| Résumé admin activé/désactivé | wr_admin_digest | Global | La fonctionnalité de résumé admin est globale — un seul paramètre couvre toutes les boutiques. |
| E-mail du résumé admin | wr_admin_digest_email | Global | L'adresse destinataire du résumé quotidien. |
| Heures du résumé admin | wr_admin_digest_hours | Global | Heures avant l'annulation à partir desquelles une commande est incluse dans le résumé. |
| Dernier envoi du résumé admin | wr_admin_digest_last_sent | Global | Horodatage de limitation. Mis à jour globalement lors de l'envoi d'un résumé. |
| Indicateur de l'assistant de configuration | wr_first | Par boutique | Indique si l'assistant de configuration a été complété pour cette boutique spécifique. |
| HTML du modèle d'e-mail | wr_email_template | Global (fichier sur disque) | Stocké sous forme de fichier par code ISO de langue, partagé par toutes les boutiques sur le même serveur. |
| Liste des modules de paiement | wr_payment_modules | Global | Quels modes de paiement déclenchent les rappels. Modifier ce paramètre affecte toutes les boutiques. |
| Planification et type de rappel | table wr | Partagé entre les boutiques | Les règles de déclenchement (jours/heures, module de paiement, indicateur d'annulation) sont stockées une seule fois et s'appliquent à toutes les boutiques. |
| Objet et corps du rappel | table wr_lang | Par boutique + par langue | Le contenu est stocké par (id_wr, id_lang, id_shop). Chaque combinaison boutique/langue possède sa propre copie. |
| Variables personnalisées | table wr_variables | Par boutique | Le nom, le type et la valeur de chaque variable sont stockés avec id_shop. |
La structure du rappel — quand il se déclenche, quel mode de paiement, s'il annule la commande — est partagée entre toutes les boutiques. Ce qui diffère par boutique, c'est le contenu du message : ce que l'e-mail dit dans chaque langue. Gardez cette distinction à l'esprit lors de la planification de votre séquence de rappels.
Fonctionnement
Comment les e-mails sont envoyés dans une configuration multi-boutique
Lorsque la tâche cron s'exécute, elle récupère les commandes en attente et lit les colonnes id_shop et id_lang de chaque commande. L'e-mail est envoyé en utilisant l'identifiant de cette boutique afin que PrestaShop utilise l'adresse d'expéditeur, le nom et le logo corrects pour cette boutique.
Le contenu du message (objet et corps) est récupéré dans la table wr_lang où id_wr, id_lang et id_shop correspondent tous à la commande. Si aucune ligne n'existe pour la combinaison langue/boutique de la commande, le rappel est ignoré pour cette commande.
Les fichiers de modèles d'e-mail sont partagés sur le disque
Le fichier de modèle utilisé pour un e-mail donné est toujours mails/{iso_code}/wiretransferreminder.html sur le serveur. Ces fichiers étant stockés sur le disque et non dans la base de données, toutes les boutiques d'une même installation PrestaShop partagent les mêmes fichiers de modèles. Modifier le modèle dans n'importe quel contexte de boutique écrase le fichier pour toutes les boutiques.
Une seule tâche cron couvre toutes les boutiques
Vous n'avez pas besoin d'une tâche cron distincte pour chaque boutique. L'URL cron unique traite les commandes en attente pour toutes les boutiques de l'installation. La clé cron étant globale, une seule URL fonctionne pour toute la configuration.
Comportement en cas d'absence de traduction
Il n'existe pas de repli automatique vers la langue par défaut. Si un client passe une commande dans une langue pour laquelle vous n'avez pas fourni de traduction, le rappel n'est tout simplement pas envoyé pour cette commande. C'est intentionnel — un e-mail non traduit pourrait dérouter le client davantage que de ne rien recevoir.
Exemples d'utilisation
Exemple : Deux boutiques avec des coordonnées bancaires différentes
Vous gérez une boutique espagnole et une boutique française. Toutes deux acceptent les paiements par virement. Vous souhaitez que chaque rappel inclue le bon compte bancaire pour chaque pays.
- Passez à la boutique espagnole dans le sélecteur de boutique.
- Accédez à Variables personnalisées et ajoutez une variable nommée
bank_detailsavec le texte du compte bancaire espagnol. - Passez à la boutique française.
- Ajoutez le même nom de variable
bank_detailsavec le texte du compte bancaire français. - Dans le corps du message de rappel de chaque boutique, insérez
{bank_details}à l'endroit où vous souhaitez que les informations bancaires apparaissent.
Chaque boutique envoie des e-mails avec ses propres coordonnées bancaires sans avoir besoin de messages de rappel distincts.
Exemple : Trois langues, une seule boutique
Votre boutique unique s'adresse à des clients anglais, allemands et espagnols. Les trois langues sont actives dans PrestaShop.
- Ouvrez le formulaire de modification du message de rappel.
- Rédigez l'objet et le corps en anglais sous l'onglet EN.
- Cliquez sur l'onglet DE et rédigez la version allemande.
- Cliquez sur l'onglet ES et rédigez la version espagnole.
- Cliquez sur Enregistrer.
Lorsqu'une commande arrive, le cron envoie l'e-mail dans la langue utilisée par le client lors de son achat. Un client ayant commandé en allemand reçoit automatiquement la version allemande.
Exemple : Mettre à jour toutes les boutiques d'un groupe en une seule fois
Si vous devez appliquer le même contenu de rappel à toutes les boutiques d'un groupe de boutiques — par exemple, après un changement de politique affectant tous les magasins — vous pouvez utiliser le contexte de groupe :
- Positionnez le sélecteur de boutique sur le groupe de boutiques (ni Toutes les boutiques, ni une boutique individuelle).
- Ouvrez la configuration du module et modifiez le message de rappel.
- Enregistrez. Le contenu est écrit dans toutes les boutiques de ce groupe.
Utilisez cette option avec précaution. Les traductions spécifiques à une boutique déjà enregistrées pour des boutiques individuelles du groupe seront écrasées.
Notes importantes
- Les règles de déclenchement des rappels — les champs de la table
wrpour la planification, le module de paiement et l'indicateur d'annulation — ne sont pas par boutique. Un rappel configuré pour se déclencher après 3 jours se déclenche pour toutes les boutiques selon le même calendrier. - Si une langue est active dans PrestaShop, vous devez fournir un objet et un corps non vides pour cette langue dans chaque message de rappel. Il n'y a pas de repli automatique vers la langue par défaut.
- L'URL cron et la clé de sécurité sont globales. Une seule tâche cron traite toutes les boutiques — vous n'avez pas besoin de plusieurs tâches cron.
- L'e-mail de résumé admin est envoyé dans la langue par défaut du contexte de boutique au moment où le cron s'exécute, sur la base de
PS_LANG_DEFAULT. - Sur une installation à boutique unique, tout fonctionne comme en mode par boutique, et la distinction multi-boutique ne s'applique pas en pratique.
Dépannage
| Problème | Solution |
|---|---|
| Les clients d'une boutique reçoivent des rappels, mais pas ceux d'une autre boutique | Vérifiez que les messages de rappel ont un objet et un corps renseignés pour toutes les langues actives dans la deuxième boutique. Ouvrez le module dans le contexte de cette boutique et inspectez les onglets de langue de chaque rappel. |
| L'enregistrement d'un rappel échoue avec « L'objet de l'e-mail pour [langue] est vide » | Chaque langue active doit avoir un objet. Passez à l'onglet de la langue signalée et saisissez le texte de l'objet. Si vous n'avez pas besoin de cette langue, désactivez-la dans PrestaShop sous International > Traductions > Langues — il s'agit d'un changement au niveau du magasin qui affecte bien plus que ce seul module. |
La variable personnalisée {my_var} apparaît vide dans les e-mails d'une boutique | La variable a probablement été créée dans un contexte de boutique différent. Passez à la bonne boutique dans le sélecteur, accédez à Variables personnalisées et vérifiez que la variable existe. Si ce n'est pas le cas, ajoutez-la. |
| Toutes les boutiques envoient le mauvais design de modèle d'e-mail | Les fichiers de modèles HTML sont partagés sur le disque. Modifier le modèle dans n'importe quel contexte de boutique écrase le fichier pour toutes les boutiques. Modifiez le modèle délibérément pour la langue spécifique que vous devez changer. |
| Les modifications des messages de rappel n'apparaissent pas pour une boutique spécifique | Vous avez peut-être enregistré en étant dans le contexte Toutes les boutiques ou d'un groupe de boutiques. Ouvrez le module spécifiquement dans le contexte de la boutique individuelle, puis re-modifiez et re-sauvegardez le rappel. |
| Le cron envoie un rappel en anglais à un client français | La ligne wr_lang pour ce rappel est peut-être manquante ou vide pour le français dans cette boutique. Modifiez le rappel, passez à l'onglet de langue française, vérifiez que le contenu est présent et re-sauvegardez. |
Foire aux questions
Dois-je installer le module séparément dans chaque boutique ?
Non. Installez le module une seule fois et il est disponible pour toutes les boutiques. Le tableau de bord de configuration suit l'avancement par boutique grâce à un indicateur par boutique, vous verrez donc la liste de contrôle de configuration la première fois que vous ouvrirez le module dans une boutique qui n'a pas encore été configurée.
Si je crée un nouveau message de rappel, apparaît-il automatiquement dans toutes mes boutiques ?
La règle de déclenchement est partagée entre les boutiques, mais le contenu du message (objet et corps) ne l'est pas. Après avoir créé le rappel, passez à chaque boutique dans le sélecteur de boutique et renseignez le contenu traduit pour cette boutique sous les onglets de langue.
Puis-je utiliser des délais d'annulation différents pour différentes boutiques ?
Non. Le paramètre d'annulation automatique est global et applique le même nombre de jours à toutes les boutiques. Si vous avez besoin de délais d'annulation différents par boutique, vous devrez désactiver l'annulation automatique globalement et gérer les annulations manuellement.
Que se passe-t-il si la langue de commande d'un client n'a pas de traduction pour un message de rappel ?
L'e-mail n'est pas envoyé pour ce rappel. Il n'existe pas de repli automatique vers la langue par défaut — un e-mail non traduit pourrait dérouter le client davantage que de ne rien recevoir. Renseignez toujours toutes les langues actives pour éviter les lacunes.
Le changement de contexte de boutique affecte-t-il la clé cron ?
Non. La clé cron est stockée globalement et est la même quelle que soit la boutique que vous consultez. Une seule URL cron fonctionne pour toute l'installation.
Différentes boutiques peuvent-elles avoir différents modules de paiement configurés pour les rappels ?
Pas pour le moment. La liste des modules de paiement qui déclenchent les rappels est globale, donc toutes les boutiques partagent la même liste. Le filtrage s'effectue au niveau du contenu du message — chaque boutique peut avoir un contenu différent — mais pas au niveau du module de paiement.
J'ai quatre langues actives mais l'une est rarement utilisée. Dois-je quand même traduire chaque message pour elle ?
Oui, tant que la langue est active dans PrestaShop. La solution la plus simple est de copier le contenu de la langue par défaut dans l'onglet de la langue peu utilisée — enregistrer une copie identique satisfait la validation et garantit que le cron n'ignore pas les commandes passées dans cette langue.
Les fichiers de modèles d'e-mail (l'enveloppe HTML) sont-ils stockés par boutique ou globalement ?
Les fichiers de modèles sont stockés sur le disque, un fichier par code ISO de langue (mails/fr/wiretransferreminder.html, mails/es/wiretransferreminder.html, etc.). Ces fichiers étant stockés sur un serveur partagé, modifier le modèle dans n'importe quel contexte de boutique le modifie pour toutes les boutiques. Les designs d'enveloppe différents par boutique ne sont pas actuellement pris en charge via le panneau de configuration.