it-swarm-fr.com

Ajouter un formulaire Web au type de contenu

Je voudrais créer un formulaire Web et l'ajouter au type de contenu. Ainsi, lorsque l'utilisateur crée un nœud, le formulaire Web s'ajoute automatiquement au nœud (le formulaire Web est le même pour chaque nœud de type de contenu).

est-ce possible avec webform 3?

5
user780

Vous pouvez le faire par nœud référence. Ajoutez ce type de champ à votre type de contenu. Vous pouvez toujours définir la valeur par défaut pour l'ajout automatique de formulaire Web au nœud, mais cela n'ajoute pas automatiquement votre formulaire au formulaire de modification de nœud.

Je le teste en utilisant des références et des vues de nœud, mais il n'affiche pas de formulaire Web sur la page d'édition de nœud (sous la même forme).

Vous pouvez essayer d'utiliser hook_from_alter, ce qui signifie ajouter par programmation des champs à partir du formulaire Web de référence. L'OMI est la seule solution ou il y a peut-être des modules pour cela, mais je ne les ai pas recherchés.

Vous devez également ajouter votre fonction d'envoi à ce formulaire, car vous devez également filtrer et enregistrer les champs du formulaire Web par programmation. Vérifiez l'API WebForm pour cela. Beaucoup de travail, peut-être devriez-vous penser à une meilleure solution sans programmation ni utilisation de formulaire Web?

5
Codium

Je suis juste tombé sur cela lorsque je cherchais une chose similaire. Il existe bien sûr de nombreuses façons d'y parvenir, et cela dépend aussi un peu de ce qui est réellement souhaité pour un cas d'utilisation donné. Avec cela, je veux dire si un nouveau formulaire Web doit être attaché à chaque nœud, ou si le même formulaire Web doit être affiché sur chacune des pages du nœud.

Si vous souhaitez réellement attacher un nouveau formulaire Web à chacun des nœuds, vous pouvez activer les formulaires Web sur ce type de contenu (à partir de Configuration > Paramètres du formulaire Web ). Cela permet de créer un formulaire par nœud sur ce type de contenu, mais cela ne crée pas automatiquement le formulaire pour chaque nœud, il doit être créé par nœud. Ce n'est pas vraiment utile si vous voulez le même formulaire pour chaque nœud, mais si vous voulez que le formulaire soit créé automatiquement, alors il y a quelques modules pour vous aider: https://drupal.org/project/webform_template et https://drupal.org/project/webform_default_fields

L'autre approche consiste à créer un formulaire Web et à afficher ce formulaire sur chacune des pages de nœud. Cela peut être réalisé en affichant le formulaire Web sous forme de bloc et en spécifiant le bloc à afficher dans la région Contenu et uniquement sur certains types de contenu. Activez d'abord l'utilisation d'un formulaire Web en tant que bloc en modifiant un nœud de formulaire Web existant, cliquez sur l'onglet Formulaire Web , cliquez sur Paramètres du formulaire , ouvrez Paramètres avancés et vérifiez Disponible en bloc case à cocher. Après cela, vous pouvez ajouter le bloc depuis la page Blocs normalement et restreindre la visibilité à un certain type de contenu par exemple. Si vous avez besoin d'accéder à certaines valeurs à partir du nœud où le formulaire est affiché dans le formulaire Web, vous pouvez les ajouter en tant que champs masqués et créer un module personnalisé qui les obtient du nœud et définit les valeurs dans le formulaire. Voici quelques discussions et exemples à ce sujet: https://drupal.org/node/1470748

3
Cvuorinen

Vous pouvez essayer d'utiliser hook_form_alter, ce qui signifie ajouter par programmation des champs à partir du formulaire Web de référence. L'OMI est la seule solution mais qu'est-ce que l'OMI.

0
megi