Come stampare la tassonomia nodo in un blocco?
-
10-10-2019 - |
Domanda
Mi piacerebbe stampare termini di tassonomia (dal campo field_tags
) in un blocco su una pagina di visualizzazione nodo (in un sottotema Zen).
Quindi quello che ho fatto è stato.
template.php
function michal_preprocess_block(&$vars, $hook) {
if ( arg(0) == 'node' && is_numeric(arg(1)) ) {
$node = node_load(arg(1));
$vars['node'] = $node;
$vars['node_field_tags'] = $node->field_tags;
$vars['node_content_field_tags'] = $node->content['field_tags'];
}
}
Tuttavia, quando provo a stampare in block.tpl.php
, nessuno di questi 2 variabili uscite termini di tassonomia dal campo.
print render($node_content_field_tags);
print render($node_field_tags);
Sai una funzione di Drupal per rendere un campo termini di tassonomia?
EDIT 13.01.2011, 00:21
Per quanto ho capito (da questo , questo e che ) il processo il codice dovrebbe guardare più / meno così
$node = node_load(arg(1));
$node_view($node) // Generates an array for rendering a node, see http://api.drupal.org/api/drupal/modules--node--node.module/function/node_view/7
$vars['node'] = $node;
e poi in block.tpl.php
:
render($node->content['field_tags']);
Il $ node-> contenuto è nullo, però.
Sai cosa mi manca?
Soluzione 4
ho incontrato la soluzione che cercavo:
mytheme_preprocess_block () in template.php *
$node_content = node_view(node_load(arg(1)));
$vars['node_content'] = $node_content;
.
block.tpl.php
print render($node_content['field_tags']);
Altri suggerimenti
In realtà ciò che può essere più facile è il seguente codice nel tuo preprocess:
if ($node = menu_get_object()) {
$vars['node_field_tags'] = field_view_field('node', $node, 'field_tags', 'full');
}
E poi utilizzare il seguente nel modello:
print render($node_field_tags);
Prima di tutto, si dovrebbe verificare che la funzione di pre-elaborazione viene eseguito e che la cache non sta giocando con te. Poi si potrebbe tentare di controllare le variabili. Non credo che si può usare render()
sul $node->field_tags
e io non sono troppo sicuro di $node->content['field_tags']
sia.
Controllo delle variabili vi aiuterà a capirlo, devel funziona bene per Drupal 7 e può aiutare a lì.
Si potrebbe anche controllare le CCK blocchi modulo . Si crea un blocco sidebar che mostra accanto a ogni nodo (se ha contenuto), e aggiunge che blocco alla lista delle destinazioni di rendering per ogni campo, proprio come 'occhiolino' e 'piena' e 'RSS'.
Esso non può avere tutto il controllo che stai cercando, ma potrebbe essere un buon posto per cominciare.