#php #drupal #drupal-7
#php #drupal #drupal-7
Вопрос:
Я добавил пользовательское поле под названием ‘field_header’ к основному типу содержимого страницы. Как мне получить доступ к этому полю на page.tpl.php шаблон, чтобы я мог отображать его везде, где захочу? В идеале я также хотел бы удалить его из $content. Спасибо!
Ответ №1:
Не забывайте, что не каждая страница обязательно является страницей узла, поэтому вам действительно было бы лучше попытаться получить к этому доступ через 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(amp;$vars) {
if ($node = menu_get_object() amp;amp; $node->type == 'page') {
$view = node_view($node);
$vars['my_header'] = render($view['field_header']);
}
}
Затем в page.tpl.php
у вас будет доступ к переменной $my_header
, которая будет содержать ваше полностью отображаемое поле.
Комментарии:
1. Спасибо! Мне нужно было поместить мой заголовок в определенное место, поэтому я попробовал ваш второй вариант, но я не смог заставить его работать. К счастью, используя первый вариант (и немного jQuery) Я смог решить свою проблему. Интересно, почему echo $ vars[‘my_header] не сработало в моем page.tpl.php
2. Вам не понадобились бы $ vars[‘my_header’] в page.tpl.php в этом случае достаточно просто $my_header.
3. Спасибо за этот простой, но эффективный ответ.
4. Абсолютно поразило меня. Это такая хорошая функция drupal. Спасибо за отличный ответ.
Ответ №2:
В вашем 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>
Ответ №3:
из page.tpl.php у вас есть доступ к $ node и, следовательно, ко всем полям из $ node
print ($node->body['und']['0']['value']);