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

Catégories:

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

Vincent

Formations Drupal pour WEBMASTERS, DESIGNERS et DÉVELOPPEURS.

#

Ca marche !!!!!j’ai mis ce code

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

T’es un chef !!
Merci !

#

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, 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.

Vincent

Formations Drupal pour WEBMASTERS, DESIGNERS et DÉVELOPPEURS.

Syndiquer le contenu