Ho aggiunto un campo personalizzato chiamato "field_header" al tipo di contenuto della pagina di base. Come posso accedere a questo campo sul modello page.tpl.php così posso visualizzarlo dove voglio? Idealmente vorrei rimuoverlo dal contenuto $ pure. Grazie!Drupal 7 come eseguire il rendering del campo personalizzato
7
A
risposta
10
Non dimenticare che non tutte le pagine sono necessariamente una pagina di nodo, quindi è meglio che stia cercando di accedervi in node.tpl.php
, non in page.tpl.php
.
In node.tpl.php
si può rendere il campo particolare come questo:
echo render($content['field_header']);
hide($content['field_header']); // This line isn't necessary as the field has already been rendered, but I've left it here to show how to hide part of a render array in general.
Se dovete assolutamente fare questo in page.tpl.php
poi si desidera implementare una funzione pre-elaborazione nel file di modello per ottenere la variabile è necessario:
function mymodule_preproces_page(&$vars) {
if ($node = menu_get_object() && $node->type == 'page') {
$view = node_view($node);
$vars['my_header'] = render($view['field_header']);
}
}
Poi nel page.tpl.php
avrete accesso alla variabile $my_header
che conterrà il vostro campo reso completo.
1
Nella tua node.tpl è necessario utilizzare il codice seguente, ad esempio nome di campo: field_header
<!-- For Showing only custom field's Value Use below code -->
<h2 class="title"><?php print $node->field_header['und']['0']['value'];?></h2>
<!-- ========================= OR ========================= -->
<!-- For Showing custom field Use below code , which shows custom field's value and title-->
<h2 class="title"><?php print render(field_view_field('node', $node, 'field_header')); ?></h2>
<!-- ========================= OR ========================= -->
<h2 class="title"><?php print render($content['field_header']); ?></h2>
0
da page.tpl.php si ha accesso a $ nodo e così tutti i campi da $ nodo
print ($node->body['und']['0']['value']);
Grazie! Avevo bisogno di posizionare il mio header in un posto particolare, quindi ho provato la tua seconda opzione, ma non riuscivo a farlo funzionare. Fortunatamente usando la prima opzione (e alcuni jQuery) sono stato in grado di risolvere il mio problema. Mi chiedo perché echo $ vars ['my_header] non ha funzionato nel mio page.tpl.php – martincho
Non avresti bisogno di $ vars [' my_header '] in page.tpl.php in questo caso, solo $ my_header è sufficiente. – Jasmo
Grazie per questa semplice ma efficace risposta. – Drake