[résolu]Node-vote > Probleme, ca ne fonctionne pas, SAUF....

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,

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

Forum : 

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 ca ne marche toujours pas.
j'ai carrement mis

<?php
 
global $user;
?>
<?php
 
global $base_url;
?>
<?php
 
global $node;
?>

y'aurait-il un global autre?

dans le module nodevote il y a que

<?php
 
global $user;
?>

!!!!!

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 :

<?php
$node
= node_load($nid);
?>

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').

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.