Drupal 7 как визуализировать настраиваемое поле - PullRequest
7 голосов
/ 10 ноября 2011

Я добавил настраиваемое поле с именем 'field_header' к базовому типу содержимого страницы.Как получить доступ к этому полю в шаблоне page.tpl.php, чтобы я мог отображать его где угодно?В идеале я бы хотел удалить его и из $ content.Спасибо!

Ответы [ 3 ]

10 голосов
/ 10 ноября 2011

Не забывайте, что не каждая страница обязательно является страницей узла, так что вам лучше было бы попытаться получить к ней доступ в node.tpl.php, а не page.tpl.php.

В node.tpl.php вы можете визуализировать определенное поле следующим образом:

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.

Если вам абсолютно необходимо сделать это в page.tpl.php, то вы хотите реализовать функцию препроцессора в файле шаблона, чтобы получить необходимую переменную:

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

Тогда в page.tpl.php у вас будет доступ к переменной $my_header, которая будет содержать ваше полное визуализированное поле.

1 голос
/ 09 мая 2014

В вашем node.tpl вы должны использовать следующий код, например, имя поля: 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 голосов
/ 02 октября 2015

из page.tpl.php у вас есть доступ к $ node и все поля из $ node

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