Submitted by zorax on
Bonjour,
Mon problème : récupérer une requête avec des liens croisés
j'ai une page "emission" créée par view.
j'affiche la page (composée de différentes variables) en fonction d'un argument qui est le titre de l'émission. jusque là tout va bien.
Je dois créer un fichier attaché qui doit me lister tout les évènements (contenu agenda) créés par l'animateur de l'émission.
qu'est ce qui lie l'émission (l'argument node title) et l'animateur ?:
Dans la construction du contenu "emission" il y a un "user reference" qui fait référence à l'animateur.
Mais comment, à partir de l'argument, je descends au niveau de l'animateur ?
merci pour votre aide.
Je ne croi pas ke ce soit
Permalien Soumis par mbehmane le 23 Avril, 2010 - 14:51
Je ne croi pas ke ce soit possible simplement.Tu sais surclasser les template de vue????
Car je l ai deja fait mais j ai etait obliger de surclasser le template de vue.
Salut zorax, Si j'étais toi,
Permalien Soumis par drupalfrance le 23 Avril, 2010 - 16:01
Salut zorax,
Si j'étais toi, je m'y prendrais autrement :
Tu dis que tu as une page émission créée par Views. J'imagine que tu as un type de contenu "émission". Autrement dit, tu as une vue qui n'affiche qu'un seul noeud (une émission).
Si c'est le cas, quel est l'intérêt de faire une vue ? Une vue est censée être une liste de noeuds. Si tu veux n'afficher qu'un seul noeud, utilise plutôt la page de noeud standard (à l'adresse du style
node/34
).Une fois que tu utilises la page standard, dans le template des noeuds "émission" (
node-emission.tpl.php
), tu incrustes une vue qui liste les évènements créés par l'utilisateur X. L'identifiant de l'utilisateur X sera l'id de l'animateur qui est disponible sous forme de variable dans ton template :C'est vrai c est une bonne
Permalien Soumis par mbehmane le 23 Avril, 2010 - 16:08
C'est vrai c est une bonne idée et la vue que tu a tu ajoute au valeur par defaut un block avec tes donneés pour le gerer comme un block.Javai pas compris je pensais ke selon le titre de l emission tu aller chercher plein de node.
Sinon Vincent j'avais une question pour toi si tu a une réponse car j ai remarqué ke tu était tres actif j aurai besoin de ton aide sur un sujet.
@mbehmane: Hello. OK, poste
Permalien Soumis par drupalfrance le 23 Avril, 2010 - 16:13
@mbehmane: Hello. OK, poste ta question dans un nouveau message, je t'aiderai si je connais la réponse.
je l aideja poster mais
Permalien Soumis par mbehmane le 23 Avril, 2010 - 16:18
je l aideja poster mais personne ne l avu.:)
Voici le lien.
http://drupalfr.org/forum/support/developpement/22638-laide-j-ai-un-prob...
@mbehmane: désolé, je connais
Permalien Soumis par drupalfrance le 23 Avril, 2010 - 16:37
@mbehmane: désolé, je connais pas du tout Organic Groups.
merci kan meme
Permalien Soumis par mbehmane le 23 Avril, 2010 - 16:39
merci kan meme
Merci pour vos
Permalien Soumis par zorax le 23 Avril, 2010 - 16:33
Merci pour vos réponses,
alors oui j'ai un type de contenu "émission".
oui j'ai une vue qui affiche qu'un seul noeud (une émission).
par contre pour compléter cette vue il me faut rajouter des variables connexes :
Podcast : emission déjà diffusée (fichier attaché)
descriptif de l'animateur : sa photo, texte (fichier attaché)
ce qui coince c'est donc l'agenda de l'animateur, et les derniers billets de l'animateur qui fonctionne si l'argument est le nom de l'animateur, mais pas avec le nom de l'émission. C'est le lien entre les deux que je pensais pouvoir récupérer dans la requête.
Non justement toi dans ta
Permalien Soumis par mbehmane le 23 Avril, 2010 - 17:12
Non justement toi dans ta vue tu doit construire l agenda de l animateur selon a argument.Puis tu va dans ton template node.tpl.php et tu apelle ta vue apres avoir recupere l argument ke tu va lui passé ki est dans ton fameux noeud.
Tu peu pas avoir deux argument dans ta vue et lui dire bon bah avec le premier tu me construi ma page emission et avec le 2 ieme tu va me chercher l agenda de l animateur.surtout ke le 2 ime argument dans ton cas tu le recupere dans ta page.A ma connaissance tu peu pas.
Il faut ke t apelle ton node normalement pas de vue
et ta vus construit l agenda en se servant de l argument animateur.Et dans ton template node-emission.tpl.php.tu apelle la vue ki te construit le truc de l animateur.
Tu comprend??
j'ai donc opté pour ton
Permalien Soumis par zorax le 27 Avril, 2010 - 19:08
j'ai donc opté pour ton approche.
j'ai fait une vue "emission_anim" sous forme de bloc avec comme argument "Utilisateur :uid", dans paramètre de bloc je l'ai nommé "emission_anim".
J'ai attaché à ce bloc un fichier attaché "agenda" : pareil l'argument etant "Utilisateur :uid".
en prévisualisation, si je tape 3 (uid utilisateur) : j'ai bien l'ensemble des infos (des deux fichiers attachés) , jusque là tout va bien.
ensuite j'ai créé le fichier node-emission.tpl.php :
j'ai enlevé
, ok j'ai plus rien lorsque je demande d'afficher une page emission, et je rajoute :
mais ça ne fonctionne pas , rien apparait....
je pense que c'est le nom de l'argument qui va pas "animateur". Car j'ai pas de type de contenu "animateur". Un animateur c'est juste un utilisateur (user)avec un role..j'ai mis user à la place mais ça fonctionne pas plus.
j'ai essayé de faire la même chose avec le reste des donnée qui m'interesse : podcasts, photos..sur le même principe de fichier attaché à un bloc (emission) dans view. Seulement comme argument j'ai mis "Node : Titre".
Puis j'ai rajouté dans le template de noeuds :
rien n'apparît non plus, j'ai du rater quelquechose....pourtant là j'ai bien un type de contenu "emission"
Pour tester, commence par
Permalien Soumis par drupalfrance le 27 Avril, 2010 - 21:45
Pour tester, commence par mettre en dur l'identifiant d'un animateur :
Si ce code marche, c'est la variable dans laquelle tu vas chercher l'animateur qui n'est pas bonne. Dans ce cas, installe le module "Themer Info" pour découvrir le nom de toutes les variables à ta disposition dans le template
node-emission.tpl.php
.Si ça ne marche pas, c'est ta vue qui n'est pas bonne.
T'as bien identifié que
'emission_anim'
, c'est le nom de la vue ? (pas son chemin). Par ailleurs,'default'
c'est l'affichage que tu veux utiliser. Puisque tu as une vue en bloc, faudrait ptêtre mettre'block_1'
à la place de'default'
.Sinon va dans ton template de
Permalien Soumis par mbehmane le 27 Avril, 2010 - 22:11
Sinon va dans ton template de node tu met var_dump(node_load($node->nid).
Avec ça tu aura toute tes infos dans un objet. Regarde lakel tu veut.il te remontera MM. Tes champs CCk avec cette méthode. Si ton uid n y est pas tu doit le récupérer autrement.
Si c est un user id c est normal kil soit pas ds ton node il est en session . Ou bien c est l auteur du node ke tu veut.La clé est la.
Qu est ce ki lie ton animateur a ton node.???
Tu parle du user_id genre le mec ki est loguer.
Je vois plus trop la
Alors j'ai mis effectivement
Permalien Soumis par zorax le 28 Avril, 2010 - 11:23
Alors j'ai mis effectivement la variable en dur :
mais ça change rien...
ensuite ce qui li l'émission à l'animateur c'est un node reference.
voilà ce qu'il me sort avec node_load :
["title"]=> string(6) "Gospel"
["field_emission_anim"]=> array(1) { [0]=> array(1) { ["uid"]=> string(1) "3" } }
l'argument "title" pour mon bloc "emission"
l'argument "field_emission_anim" pour mon bloc "emission_anim"
comment formuler tout ça ?
Donc : c'est ta vue qui n'est
Permalien Soumis par drupalfrance le 28 Avril, 2010 - 13:24
Donc : c'est ta vue qui n'est pas bonne. Retravaille ta vue avant de l'embedder. Teste-la dans l'admin en saisissant des arguments dans le champs "Arguments" et vérifie que tu obtiens bien les bons résultats...
Ta vue n'est pas prêt à être embeddée.
oui alors la on voi bien ke
Permalien Soumis par mbehmane le 28 Avril, 2010 - 14:20
oui alors la on voi bien ke avec le node load tu recupere ton uid.Mais comme te dit vincent si en la passant en dure tu n a rien alors ta vu n est pas bonne.Kan tu creer ta vu tu peu la tester dans l admin et voir un appercu si tu n a pas de resultat en swchant d argument c est que t a un pb dans ta vue
une fois que ta vue est regler tu met pour ton bloc emmision anim kan tu embed ta vue l argument comme ci dessous
merci encore, malheureusement
Permalien Soumis par zorax le 28 Avril, 2010 - 15:11
merci encore, malheureusement je n'y suis pas encore....
je pense qu'on fait fausse route sur les vues :
Dans les vues des 2 blocs, quand je change d'argument dans la prévisualisation ça fonctionne pour les deux vues!
bloc "emission" je rentre "gospel", j'ai bien les photos, les podcasts..
bloc "emission_anim", je rentre "3", j'ai bien l'agenda de l'animateur et ces billets.
j'ai une hésitation sur le nom du bloc. Je dois bien reprendre dans mon code celui paramétré dans ma vue dans "paramètres du bloc", Admin ?
je penses que c'est plutôt dans la formulation du php le hic.
Momo, ton code ne fonctionne pas il me renvoie une erreur sur la définition de variable $noeud.
Sinon tu mets des guillemets pour uid alors que met des apostrophes.
Si ta vue marche c est ke
Permalien Soumis par mbehmane le 28 Avril, 2010 - 15:33
Si ta vue marche c est ke dans ton template tu n appel pas correctement ta vue
Kan tu apelle une vue avec cette methode tu appel toute la vue bas le block k il y a dedans, tu apelle la vue par defaut.Donc ce que tu a mis c est normal que ca marche pas
je l ai deja fait c est comme ca
en somme tu doit mettre default en 2 ieme param le premier param c est le nom de ta vue et le troisieme ton arg.
Toi tu utilise block!!! ca ca marcherai mais avec un module_invoke.pour appeler un block c est une autre methode avec plus de param et il n y a pas d arguments.
Bref utilise exactement ce ke je t ai mis la haut et j espere que tu a bien mis chacun de tes block dans une vue differente.Si oui alors le code ci dessu n apas de raison de foirer
Essaye avec un arg en dure comme te la suggerer vincent
non, dans ma vue il y a
Permalien Soumis par zorax le 28 Avril, 2010 - 15:58
non, dans ma vue il y a plusieurs blocs, je dois les mettre séparement alors, je vais essayer
oui car une vue tu peu l
Permalien Soumis par mbehmane le 28 Avril, 2010 - 17:11
oui car une vue tu peu l appeler mais pas le block dedans.Meme sui tu arrive a l appeler avec la methode module_invoke, un block n a pas d arguments donc pour ton cas a koi bon?
une Vue par block et view_embed_view marchera avec default en deuxieme param.
ca y est, j'y suis. Alors ce
Permalien Soumis par zorax le 28 Avril, 2010 - 18:58
ca y est, j'y suis.
Alors ce qu'il se passait c'est que mes vues étaient composées de fichiers attachés, et de ce fait ça ne fonctionne pas. Il ne faut surtout pas non plus créer des blocs dans la vue, juste utiliser les paramètres par défaut!!
voici les deux lignes qui fonctionnent dans le template :
merci encore à vous deux !!
Je l avai fai mais avec la
Permalien Soumis par mbehmane le 28 Avril, 2010 - 19:14
Je l avai fai mais avec la méthode view_embed_view tu n a accès ke a tes valeur par défaut. Et puis j ai été un peu bête a quoi bon ajouter un block ou un fichier attache si tu a déjà tes données. Tan mieu si ça marche enfin