Le module Webform fournit un sous-module "Webform Share" qui permet d'intégrer un formulaire dans une page externe au site Drupal. Ca fonctionne très bien et on peux même ajouter des paramètres dans l'URL du script d'intégration, comme ?utm_campaign=skateboardingisnotacrime, afin de pré-remplir des champs du formulaire par exemple.
Mais comment faire si on veut faire varier les paramètres d'URL en fonction de la provenance de l'utilisateur ?
Exemple : si mon utilisateur vient du site webmarketing-vicieux.com, je veux pré-remplir mon champ utm_campaign avec la valeur "campagne-webmarketing-vicieux", et pour ceux qui viennent du site agression-publicitaire.com avec "campagne-agression-publicitaire".
On ne peut donc plus utiliser la technique décrite plus haut, car les paramètres sont dans l'URL de la page parente, il faut trouver comment les transmettre à l'URL de l'iframe.
Une nouvelle route pour remplacer share.js
La solution que je propose ici est de fournir une version différente du script "share.js" en créant une nouvelle route. Le code javascript, généré lors de l'accès à cette nouvelle route, récupère les paramètres de l'URL parente et les ajoute à l'attribut src de l'iframe.
Pour utiliser cette solution, il suffit donc d'installer et activer le module Webform Share Params et de remplacer "share.js" par "share_params.js" dans le script d'intégration cf. instructions détaillées dans le fichier readme du module.
Le module a été testé sur les versions 8.x-5.26 et 6.0.3 de Webfom.
Le code est disponible sur Github : https://github.com/CedricAlb/webfom_share_params
Et enfin, pourquoi avoir partagé cette solution sous forme de module plutôt qu'un patch ? Parce que je ne suis pas sur de comment l'intégrer dans le module Webform Share, j'ai donc ouvert la discussion ici : https://www.drupal.org/project/webform/issues/3214509.
Ajouter un commentaire