Submitted by jsricard on
Bonjour,
J'ai activé le module statistics, et j'arrive aisément à créer une vue et ajouter un champs permettant d'afficher le nombre de fois qu'un noeud a été affiché.
Maintenant, j'essai de créer un affichage plus personnalisé avec Contemplate, mais je ne sais pas comment retrouver la variable à utiliser en php pour afficher le nombre de fois ou un node a été affiché...
Et d'une manière plus générale, lorsque l'on rajoute un module qui "ajoute" des champs disponibles dans views, comment connaitre le nom de la variable php correspondande ?
Merci pour votre aide, et encore bravo à Drupal pour sa puissance !
En fait l'affichage de
Permalien Soumis par Damien Tournoud le 2 Janvier, 2008 - 16:55
En fait l'affichage de données via Views ou via Node (et donc Contemplate) suivent deux route différentes.
Pour Views, chaque module exporte son schéma de données (en fait des définitions de tables, de jointures et de champs). Ce schéma permet à Views de générer directement une requête et d'en déduire une vue.
De son côté, l'affichage des noeuds (géré par le module Node et modifié par Contemplate) passe par deux types de hooks :
Du coup, une donnée n'est disponible dans
$node
que si (a) elle est chargée par le module de base (via le hook_load()), ou (b) elle est ajoutée par un autre module (via l'opération'load'
du hook_nodeapi()).Dans votre cas, le module Statistics exporte bien son schéma vers Views (en fait, c'est même Views lui-même qui connait le module Statistics et qui exporte pour lui ses données), mais ne les charge pas dans
$node
. Ces données ne sont donc pas accessible pour Contemplate.Du coup, pour pouvoir afficher ces données avec Contemplate, il vous faudra les charger en utilisant
$statistics = statistics_get($node->nid)
.Damien
Il me semble avoir trouvé,
Permalien Soumis par jsricard le 2 Janvier, 2008 - 16:56
Il me semble avoir trouvé, donc j'expose ma solution si ça peut aider d'autres personnes...
-> aller dans le module correspondant : ici "statistics.module"
-> parcourir le fichier pour trouver le point d'entrée recherché : ici "function statistics_get($nid)"
-> ajouter le code correspondant dans "contemplate" :
$statistics = statistics_get($node->nid);
print $statistics['totalcount']
Et voilà !
Merci damz pour ces
Permalien Soumis par jsricard le 2 Janvier, 2008 - 17:00
Merci damz pour ces explications plus rationnelles que les miennes, nous avons du poster quasiment en même temps...