viewfield ou insert view

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Bonjour,

Qui peut m'expliquer la différence entre viewfield et insert view.
en fait je voudrais insérer une vue dans une node et je n'y arrive pas!

Merci
Martine

Version de Drupal : 

Hello,

Insert_view est un filtre d'affichage. Un filtre permet de modifier le contenu saisi par un utilisateur en enlevant ou en modifiant des éléments pour des raisons de sécurité, ou comme une facilité syntaxique. Par exemple, il y a un filtre - activé par défaut - qui convertit automatiquement les URL et les adresses e-mail en liens cliquables.

Eh bien, insert_view fonctionne selon le même principe, sauf qu'au lieu de rendre les URLs cliquables, il permet de remplacer automatiquement le texte [view:NomDeLaVue] par le contenu d'une vue. C'est à toi de saisir ce texte dans ton contenu à l'endroit où tu veux que ta vue apparaisse.

D'après ce que tu dis, c'est ce module qu'il te faut. Pour l'utiliser, il faut te rendre dans Admin > Formats d'entrée après l'avoir installé. Tu verras alors les 3 formats d'entrée (format d'entrée = plusieurs filtres utilisés ensemble) qu'on trouve par défaut dans Drupal : Filtered HTML, Full HTML et PHP Code. Clique sur le lien "configurer" du format que tu utilises pour ton contenu, et active le fitre insert_view pour ce format.

PS. Le module viewfield fait en gros la même chose que insert_view. La différence c'est que insert_view te permet de faire apparaître une vue n'importe où dans du texte libre, alors que viewfield te permet de faire apparaître une vue dans un champ précis (et suppose que tu aies défini le champ en question avec le module CCK).

Bonjour,

J'ai installé insert_view et defini le format.
Une précision, quant à ce que je voudrais faire.
J'ai crée une node avec CCk et par exemple, j'ai un champ
"numero etudiant", je voudrais que une fois le N° saisi, la vue
concernant l'étudiant apparaisse? est-ce possible ?

et si oui, comment cela se traduit-il au niveau de mon formulaire de saisie.
j'ai essayé en utilisant [view:rechetud1=1=nom du champ que je viens de saisir], aucun effet.
Merci

Je n'en suis pas sûr... mais tu pourrais créer un autre champ de type "computed field" dans ton node CCK.

Un champ "computed field" peut contenir une valeur générée à partir du contenu d'autres champs. En gros, il faudra mettre la syntaxe [view:XXX] dans le computed field (attention, il y a une syntaxe bien précise à respecter pour récupérer la valeur des autres champs - cf. http://drupal.org/project/computed_field).

Mais ça ne suffira pas : il faudra ensuite passer le contenu du computed field dans le filtre permettant de remplacer [view:XX] par la vue en question. Pour ça, il faut utiliser la fonction check_markup() qui prend 2 arguments : le texte à convertir et le numéro du format d'entrée à appliquer (1 = Filtered HTML ; 2 = PHP Code ; 3 = Full HTML).

CONCLUSION :

Ton computed field contiendra quelque chose comme :

<?php
check_markup
('[view:XXX]', 3);
?>

Je te laisse affiner la syntaxe exacte pour [view:XXX] sachant que quelque part dans le XXX, il faudra passer en paramètre à la vue le numéro d'étudiant récupéré dans l'autre champ.

Cette solution est moyenne, car tout le code HTML produit par la vue va être stocké dans le computed field. En fait, réflexion faite, je me dis que ça serait plus judicieux de laisser tomber le computed field, et de simplement ajouter ça dans le template de ton node (node-XXX.tpl.php) :

<?php
print check_markup('[view:XXX]', 3);
?>

Toujours en remplaçant le XXX par le code qui va bien. C'est exactement la même logique, mais en plus léger. :)

Bonjour et merci de la réponse,

Mais je suis vraiment débutante sous drupal,
et un question bête : où trouve-t-on le node-XXX.tpl.php et comment le modifier....
je suis allée voir ce qui avait dans le "content template" correspondant à mon node et j'avoue n'avoir pas tout compris.
bonne journée.
Martine

Les fichiers .tpl.php se trouvent dans le répertoire de thème (l'emplacement exact dépend du thème que tu utilises).

Cela dit, si tu utilises contemplate, tu peux insérer le code que je t'ai indiqué directement dans le contemplate (qui fait office de fichier .tpl.php).

Désolé si mes explications te paraissent courtes, mais pour vraiment te répondre, il faudrait écrire un tuto complet sur le sujet.