2011-11-10 43 views
7

He agregado un campo personalizado llamado 'field_header' al tipo de contenido de página básico. ¿Cómo accedo a este campo en la plantilla page.tpl.php para que pueda mostrarlo donde quiera? Idealmente, me gustaría eliminarlo de $ contenido también. ¡Gracias!Drupal 7 cómo representar el campo personalizado

Respuesta

10

No olvide que no todas las páginas son necesariamente una página de nodos por lo que sería mejor que intente acceder a esto en node.tpl.php, no en page.tpl.php.

En node.tpl.php puede hacer que el campo particular de esta manera:

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. 

Si es absolutamente necesario hacer esto en page.tpl.php continuación, se desea implementar una función de preproceso en el archivo de plantilla para obtener la variable que necesita:

function mymodule_preproces_page(&$vars) { 
    if ($node = menu_get_object() && $node->type == 'page') { 
    $view = node_view($node); 
    $vars['my_header'] = render($view['field_header']); 
    } 
} 

Luego, en page.tpl.php tendrá acceso a la variable $my_header que contendrá su campo rendido completa.

+0

Gracias! Necesitaba colocar mi encabezado en un lugar determinado, así que probé tu segunda opción, pero no pude hacer que funcionara. Afortunadamente, usando la primera opción (y algo de jQuery) pude resolver mi problema. Me pregunto por qué echo $ vars ['my_header] no funcionó en mi page.tpl.php – martincho

+0

No necesitaría $ vars [' my_header '] en page.tpl.php en ese caso, solo $ my_header es suficiente. – Jasmo

+0

Gracias por esta respuesta simple pero efectiva. – Drake

1

En su node.tpl que tienen que utilizar siguiente código, por ejemplo, el nombre de 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

de page.tpl.php tiene acceso a $ nodo y así todos los campos de $ nodo

print ($node->body['und']['0']['value']); 
Cuestiones relacionadas