Comment rendre par programmation l'accroche d'un nœud en utilisant la couche de thème?


10

Comment puis-je afficher par programme l'accroche d'un nœud à l'aide de la couche de thème?

Réponses:


20

node_view() est la fonction standard pour le rendu des nœuds, par exemple

$node = node_load(1);
$view = node_view($node, 'teaser');
$rendered = drupal_render($view);

Il y a un nodethème défini par le module node (in node_theme()) mais je ne l'ai jamais vu utilisé.


1
Node_theme () ne permet-il pas au système de thème d'utiliser un fichier .tpl.php pour l'élément et d'autoriser également les fonctions de prétraitement?
mpdonadio

Oui, je suis préoccupé par le contournement de la couche de thème. Si je le faisais, alors les autres modules voulant s'intégrer ne pourraient pas. Du moins, je pense que c'est exact?
Lester Peabody

1
Lors de l'analyse de api.drupal.org/api/drupal/modules%21node%21node.module/function/… si vous affichez le code d'implémentation, où il est indiqué $build += array(, il contient un #themeattribut qui, je suppose, indique à Drupal d'utiliser le système de thème. Corrige moi si je me trompe. Je commence tout juste à `` obtenir '' l'API Drupal :)
Lester Peabody

@MPD Oui, je n'ai pas très bien expliqué cela, je voulais juste dire que je n'avais jamais vu un appel comme theme('node', ...avant. En fait, cela ne fonctionnerait même pas car il se définit comme ayant un render elementau lieu de variables.
Clive

@Lester sur place, il y a 2 façons d'appeler des fonctions à thème, comme « normale » ( theme('theme_name', $args)et en utilisant ce qu'on appelle l' render elementart. Les hook_theme()documents expliquent assez bien, ce n'est pas 100% intuitif , mais une fois que vous le savez, il est vraiment utile. L' utilisation node_view()volonté ne contournez jamais la couche de thème, donc ça devrait aller :)
Clive
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.