Intégrer un webform Drupal dans une page externe avec des paramètres d'URL

Pochoir sur un mur représentant 2 hommes reliés par des masques à gaz et une inscription "love"
Un module augmentant les fonctionnalités de Webform Share pour transmettre les query parameters de la page parente à l'iframe contenant le formulaire

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.

 

Mots clés

Ajouter un commentaire

Le contenu de ce champ sera maintenu privé et ne sera pas affiché publiquement.

Texte brut

  • Aucune balise HTML autorisée.
  • Les lignes et les paragraphes vont à la ligne automatiquement.
  • Les adresses de pages web et les adresses courriel se transforment en liens automatiquement.