Submitted by jubjub on
Bonjour,
voila mon probleme..
J'ai placé le code pour afficher les vote (ou plutot notes)
dans node.tpl
J'ai fais des images pour 1/10, 2/10; 3/10 etc...
Ca donne ca :
<a href=""><img src="files/image-<?php print theme_nodevote_display_vote($node->nid); ?>.jpg"></a>
La, ca marche, pas de probleme.
Je souhaite, supprimer ce code du node.tpl et le placer dans un template d'un certain type de node, avec contemplate de ckk...
-Si je met le meme code ci dessus,
OU
-si je met le meme code sans image :
<?php print theme_nodevote_display_vote($node->nid); ?>
TOUT EST A ZERO sur 10.
-Si je met le code que me propose contemplate :
<?php print $nodevote->vote_display ?>
Ca me met TOUT A 1/10 !!
HELP !!
Merci
A mon avis c'est parce que
Permalien Soumis par alliax@drupal.org le 16 Janvier, 2007 - 15:28
A mon avis c'est parce que dans contemplate tu ne dois pas avoir $node défini alors la valeur de $node->id est 0 ce qui t'affiche l'image zero, enfin quelque chose dans le genre car je parle sans savoir.
Essaie peut etre de rajouter GLOBAL $node; avant d'utiliser le code avec $node->id
c'est une bonne idée mais
Permalien Soumis par jubjub le 16 Janvier, 2007 - 15:51
c'est une bonne idée mais ca ne marche toujours pas.
j'ai carrement mis
y'aurait-il un global autre?
dans le module nodevote il y a que
!!!!!
Y a deux façons de faire,
Permalien Soumis par drupalfrance le 17 Janvier, 2007 - 17:38
Y a deux façons de faire, une bonne et une mauvaise, en sachant que la mauvaise est bcp plus facile et rapide. :)
Mauvaise façon
Pour récupérer le node en cours dans ton template, écris :
Note que
$nid
est une variable disponible dans tout template ; elle contient l'id du node affiché. Si tu as uniquement besoin de cet id, ce n'est même pas la peine de rajouter le code ci-dessus (utilise$nid
directement).Bonne façon
La façon la plus élégante de mettre des variables à disposition d'un template, c'est de passer par
_phptemplate_variables()
(voir doc sur drupal.org) ou le hook_nodeapi() (case 'view'
).Ca marche !!!!!j'ai mis ce
Permalien Soumis par jubjub le 17 Janvier, 2007 - 20:56
Ca marche !!!!!j'ai mis ce code
T'es un chef !!
Merci !
Note que les appels à
Permalien Soumis par Damien Tournoud le 17 Janvier, 2007 - 21:41
Note que les appels à node_load() sont mis en cache mémoire à l'intérieur de la fonction. Donc en pratique, utiliser cette "mauvaise méthode" a un impact presque nul en terme de performances.
OK damz, merci pour l'info,
Permalien Soumis par drupalfrance le 17 Janvier, 2007 - 21:45
OK damz, merci pour l'info, je ne savais pas.
Par "mauvaise méthode", je voulais surtout dire que ce genre de code (node_load()) n'a pas à se retrouver - a priori - dans un template, dont le rôle est essentiellement d'afficher des variables.