Wie kann ich den Teaser eines Knotens mithilfe der Themenebene programmgesteuert rendern?

10

Wie rendere ich programmgesteuert den Teaser eines Knotens mithilfe der Themenebene?

Lester Peabody
quelle

Antworten:

20

node_view() ist die Standardfunktion zum Rendern von Knoten, z

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

Es gibt ein nodeThema, das vom Knotenmodul (in node_theme()) definiert wird, aber ich habe es noch nie verwendet gesehen.

Clive
quelle
1
Ist es nicht node_theme (), mit dem das Themensystem eine .tpl.php-Datei für das Element verwenden und auch Vorverarbeitungsfunktionen zulassen kann?
mpdonadio
Ja, ich mache mir Sorgen, die Themenebene zu umgehen. Wenn ich das tun würde, könnten andere Module, die sich einschalten wollen, dies nicht. Zumindest finde ich das richtig?
Lester Peabody
1
Wenn Sie bei der Analyse von api.drupal.org/api/drupal/modules%21node%21node.module/function/… den Implementierungscode anzeigen , in dem steht $build += array(, dass er ein #themeAttribut enthält, das Drupal vermutlich verwenden soll das Themensystem. Korrigiere mich, wenn ich falsch liege. Ich fange gerade an, die Drupal-API zu "bekommen" :)
Lester Peabody
@MPD Ja, das habe ich nicht sehr gut erklärt, ich meinte nur, ich hätte noch nie einen Anruf wie theme('node', ...zuvor gesehen. Tatsächlich würde das nicht einmal funktionieren, weil es sich selbst als ein render elementstatt definiert variables.
Clive
@Lester Spot on, gibt es 2 Möglichkeiten Thema Funktionen aufrufen, die ‚normale‘ Art und Weise ( theme('theme_name', $args)und durch so genannte Verwendung render elements. Die hook_theme()docs es erklären ziemlich gut, es ist nicht zu 100% intuitiv , aber wenn Sie wissen, es ist wirklich nützlich. Mit node_view()Willen Umgehen Sie niemals die Themenebene, damit es Ihnen gut geht :)
Clive