Отображение поля типа содержимого Drupal за пределами узла

#drupal #drupal-7 #custom-fields

#drupal #drupal-7 #пользовательские поля

Вопрос:

Я создал пользовательское поле для типа контента в Drupal 7, которое мне нужно отобразить за пределами узла, в отдельной области на странице.

Аналогично тому, как работает переменная $title (в которой вы можете разместить ее там, где вам нравится в page.tpl.php файл) Я хотел бы иметь возможность создать другую переменную с именем $subtitle, которая вызывала бы данные из текущего узла и позволяла мне распечатывать переменную в области на page.tpl.php досье.

Я видел примеры представления, в которых, по-видимому, использовались представления и блоки для выполнения этой задачи, но это кажется немного чрезмерным, и я подумал, есть ли более простой способ.

Ответ №1:

Существует более простой способ, однако вам нужно иметь в виду, что не каждая страница является страницей узла, и не каждая страница узла будет иметь правильный тип содержимого, поэтому вы должны быть избирательными. Просто добавьте это в свою тему template.php файл:

 function mytheme_preprocess_node(amp;$vars) {
  $node = $vars['node'];
  if ($node->type == 'my_type') {
   $vars['subtitle'] = $node->field_my_field[LANGUAGE_NONE][0]['value'];
  }
}
  

Затем page.tpl.php вы должны сделать что-то вроде этого:

 if (isset($subtitle)) :
  echo $subtitle;
endif;
  

Убедитесь, что вы очистили свои кэши (в admin / config / development / performance), как только вы внедрили перехват в template.php или Drupal не примет его.