Message d'avertissement

The subscription service is currently unavailable. Please try again later.

Limiter un nodereference grâce à une vue

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 à tous !

Un petit problème agaçant :
J'ai un champ d'un type de contenu de type nodereference. Le nombre de noeud pouvant être référencé étant très important, j'ai décidé d'utiliser la possibilité "Nœuds pouvant être référencés (Vue)".
J'ai créé ma vue, je la sélectionne dans l'interface du type de contenu, mais j'ai un problème avec l'argument...
L'argument nécessaire à ma vue est le node ID. Si j'entre un node ID manuellement, cela fonctionne. Par contre je n'arrive pas à récupérer l'argument de l'URL de ma page.

Or, en utilisant classiquement cette vue dans une page, sans nodereference, ça marche.

Est-il possible dans l'interface "Noeud pouvant être référencé" de récupérer un argument de l'URL ?

Merci d'avance pour votre aide

Version de Drupal : 

Bonsoir,
Vous voulez retirer un arguments d'une URL c'est bien cela ?
Pour ca il faut choisir de fournir l'argument par défaut => Code PHP et dans le textarea vous mettez :

$mon_argument = arg(1);
return $mon_argument;

Danse le cas d'une url "mon_url/mon_node" il prend "mon_node" comme argument.

Merci de votre réponse,

Il s'agit bien de récupérer un argument d'une URL, mais dans le cas particulier d'un champ nodereference pour lequel on définit une vue qui va "filtrer" les noeuds référencés par ce champ.
En l'occurrence ce n'est pas l'argument par défaut que je cherche à définir; j'ai simplement le champ "Argument de la vue" tout en bas, avec l'indication "Fournit une liste d'arguments, séparés par des virgules, à transmettre à la vue."
Je ne pense pas qu'il soit possible d'insérer du PHP ici (c'est un simple champ input, pas un textarea). Je pensais pouvoir utiliser un argument du type %n pour récupérer l'argument de l'url mais c'est là que ça bloque...

Ah d'accord j'avais pas compris. Ce n'est normalement pas possible tel quel avec nodereference par contre il y a patch qui à été soumis ici http://drupal.org/node/473670 qui permet depuis nodereference de passer des arguments à partir de l'url, il suffira d'appliquer le patch et une fois appliquer l'arguments pourra être pris en utilisant "arg()".

Bon, le premier test n'est pas concluant, j'ai appliqué le patch, lorsque le coche la nouvelle checkbox "Allow view arguments to be passed through URL" du champ nodereference de mon type de contenu et que je valide, j'obtiens l'erreur suivante :

Fatal error: Cannot redeclare content_types_overview() (previously declared in \sites\all\modules\devel\cck\includes\content.admin.inc:14) in \sites\all\modules\cck\includes\content.admin.inc on line 57

Pourtant dans le patch pas de trace de cette fonction...
J'avoue ne pas trop y voir clair... j'accepte vos suggestions avec plaisir !

J'ai bien indiqué l'argument que je souhaite récupérer dans ma view. D'ailleurs si je teste cette view directement sur une page cela fonctionne, l'argument est récupéré et j'obtiens bien la liste des noeuds souhaités.

C'est bien au niveau du type de contenu, lorsque je souhaite filtrer mon champ nodereference avec cette vue, que l'argument pose problème (fonctionne si on l'indique en clair mais ne permet pas de le récupérer à partir de l'URL)

Le lien donné par takeova indique que c'est bien un problème de nodereference. Petit souci apparemment au niveau du patch, je verrai ce soir si j'ai éventuellement fais une erreur en l'appliquant ou si j'ai besoin de "patcher le patch" (!) pour le faire marcher sur CCK 6.x-3.x-dev.

En tout cas merci de vos réponses, et si vous avez des idées sur les origines possibles du message d'erreur je suis preneur.

Bon, il devait s'agir d'une erreur dans l'application du patch, je n'ai plus le message d'erreur.

Par contre ça ne fonctionne toujours pas !!! Là je m'arrache les cheveux.
La vue est ok, ça fonctionne lorsque je donne une valeur à l'argument... mais pas en récupérant à partir de l'URL.

Je suis à court d'idée sur ce coup là, à part repenser tout mon système de nodes/vues.... :-(

Merci d'apporter ta contribution !

Malheureusement je n'utilise pas un affichage de type page pour ma view, mais content pane. Je ne pense donc pas pouvoir essayer ta proposition.

En revanche cela m'a fait (re)découvrir que dans le bloc "pane settings" il y avait un champ Argument input, que je n'utilise pas du tout habituellement.

Plusieurs possibilités s'offrent à moi, dont 2 qui me paraissent pouvoir modifier le comportement de ma vue : From panel Argument et From context.

Mes premiers essais ne sont pas concluants, je vais toutefois approfondir dans cette voie...

J'avoue tout de même être vraiment confus dans toutes les possibilités de context/arguments à tous les niveaux : page, panel,vue... J'ai l'impression qu'il y a 50 façons de faire la même chose. J'espère sincèrement que tout cet aspect sera retravaillé pour Drupal 7 !
(si vous avez des tutos bien faits sur le sujet je suis preneur!)