Come rendere programmaticamente il teaser di un nodo usando il livello tema?


10

Come posso rendere programmaticamente il teaser di un nodo usando il layer tema?

Risposte:


20

node_view() è la funzione standard per il rendering dei nodi, ad es

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

C'è un nodetema definito dal modulo del nodo (in node_theme()) ma non l'ho mai visto effettivamente usato.


1
Node_theme () non consente al sistema dei temi di utilizzare un file .tpl.php per l'elemento e consentire anche le funzioni di preelaborazione?
mpdonadio

Sì, sono preoccupato di bypassare il livello del tema. Se lo facessi, allora gli altri moduli che vogliono entrare in chip non sarebbero in grado di farlo. Almeno, penso che sia corretto?
Lester Peabody,

1
Dopo aver analizzato api.drupal.org/api/drupal/modules%21node%21node.module/function/… se visualizzi il codice di implementazione, dove dice $build += array(, ha un #themeattributo che suppongo che Drupal usi il sistema tematico. Correggimi se sbaglio. Sto iniziando a "ottenere" l'API Drupal :)
Lester Peabody il

@MPD Sì, non l'ho spiegato molto bene, volevo solo dire che non avevo mai visto una chiamata come theme('node', ...prima. In realtà non funzionerebbe nemmeno perché si definisce come avere render elementinvece di variables.
Clive

@Lester Spot on, ci sono 2 modi per chiamare funzioni a tema, il modo 'normale' ( theme('theme_name', $args)e utilizzando i cosiddetti render elements. I hook_theme()documenti spiegano abbastanza bene, non è intuitivo al 100%, ma una volta che si sa, è davvero utile. Utilizzando node_view()volontà non aggirare mai il tema, quindi dovresti stare bene :)
Clive
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.