Module Drupal WebForm. Création d’un formulaire de commande de produit
Revenons à notre catalogue de produits que nous avons créé dans une leçon précédente. Le catalogue est bien rempli et affiché plus ou moins correctement, mais commander un produit via un formulaire de contact est assez peu pratique : il faut copier le nom, le code produit, puis les coller dans le formulaire et écrire un message. Créons donc un formulaire qui simplifie le processus de commande. Pour cela, nous aurons besoin du module Webform, qui sert à créer des formulaires via Drupal. Dans ce formulaire, nous transmettrons le nom du produit et sa quantité. Si vous avez besoin du code produit, vous pouvez transmettre cela de façon analogue.
Téléchargez et installez le module Webform.
Après l'installation, un type de contenu Webform doit apparaître. Créez un contenu de type Webform et nommez-le Formulaire de commande de produit (ou comme vous le souhaitez). Après la création, vous serez redirigé vers la page de configuration du formulaire web.
Nous devons créer deux champs pour le nom du produit et sa quantité, pour cela ajoutez deux champs de type textfield (champs texte).
Dans le champ du nom, saisissez %get[product]
Pour le champ quantité, définissez la valeur par défaut à "1".
Ajoutez également un champ texte pour l’email et une zone de texte (textarea) pour les souhaits et préférences des clients.
%get[product]
est l’équivalent de la variable PHP $_GET['product']
, qui récupère la valeur depuis l’URL.
Le formulaire est prêt, il faut maintenant créer un lien vers ce formulaire, en lui ajoutant un paramètre product
contenant le nom du produit. Nous allons créer ce lien sous forme d’un bloc placé en bas de la node de chaque produit.
Pour effectuer les opérations suivantes, il est nécessaire d’activer le module intégré PHP filter, qui permet d’insérer du code PHP directement dans un bloc ou un contenu. Après activation, un nouveau format de saisie « PHP code » sera disponible.
Créez un nouveau bloc et choisissez le format d’entrée « PHP code ». Dans le texte du bloc, insérez le code suivant :
<a href="<?php print base_path(); ?>node/6?product=<?php print drupal_get_title(); ?>">commander le produit</a>
où node/6
est l’adresse de la node du formulaire de commande.
La fonction drupal_get_title()
retourne le titre de la node, qui dans notre cas est le nom du produit. La fonction base_path()
retourne le chemin vers la racine du site (par exemple drupalbook.org/). Ensuite, placez ce bloc dans la région Contenu (Content). Définissez la visibilité du bloc en mode PHP (PHP mode) avec le code suivant :
$types['tovar'] = 1; $match = false; if ((arg(0) == 'node') && is_numeric(arg(1))) { $node = node_load(arg(1)); $match = isset($types[$node->type]); } return $match;
Ici, tovar
est le nom machine du type de contenu Produit.
Notre formulaire de commande de produit est prêt.