[Решено] Вывод заголовка ноды в метке поля

Главные вкладки

Аватар пользователя misterBald misterBald 5 июля 2013 в 1:32

Необходимо вставить заголовок просматриваемой статьи в метку поля.

Поясню: Есть нода с заголовком "Half Life". Есть поле с меткой "Скриншоты". Необходимо чтобы выводилось: "Скриншоты Half Life".

Решил переопределить вывод метки в template.php
Нашел функции, определяющие вывод полей и их меток соответственно:
https://api.drupal.org/api/drupal/modules!field!field.module/function/th...
https://api.drupal.org/api/drupal/modules!field!field.module/function/te...
https://api.drupal.org/api/drupal/modules!field!field.module/function/te...

Попытался поменять функцию theme_field:

<?phpfunction theme_field($variables, $node) {
  $variables['page_title'] = $node->title ;
  $output = '';

  // Render the label, if it's not hidden.
  if (!$variables['label_hidden']) {
    $output .= '<div class="field-label"' . $variables['title_attributes'] . '>' . $variables['label'] .' '. $variables['page_title'] .':&nbsp;</div>';
  }

  // Дальше все как в стандартной функции?>

Но, судя по всему, $variables['page_title'] оказывается пустой, в любом случае ничего не выводится.

Пробовал прописывать строчку:
<?php$variables['page_title'] = $node->title ;?>
в template_preprocess_field. Но результата так же не было.

Может у кого-нибудь есть идеи как реализовать?

Комментарии

Аватар пользователя misterBald misterBald 5 июля 2013 в 9:21

"voviko" wrote:
Скриншоты <?php print $title;?> в node--TYPE.tp

Вариант рабочий, но неудобный.

По сути требуется в функции function theme_field вызвать переменные $node. А этого не происходит (не понимаю почему).

Аватар пользователя misterBald misterBald 5 июля 2013 в 10:40

"imarat" wrote:
$element['#object'] - нода
все доступные переменные тут - https://api.drupal.org/api/drupal/modules!field!theme!field.tpl.php/7[/q...

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

Попробовал в field--field-name.tpl.php:
<div class="field-label"<?php print $title_attributes; ?>><?php print $label ?> <?php print $element['#object']; ?>:&nbsp;</div>
Результат:
Recoverable fatal error: Object of class stdClass could not be converted to string в функции include() - Как я понимаю переменная, которую мы пытаемся вывести не может быть конвертирована.

Как правильно вывести?

Аватар пользователя misterBald misterBald 5 июля 2013 в 10:50

"misterBald" wrote:
Как правильно вывести?

Сам отвечаю на свой вопрос. Правильно так:

<div class="field-label"<?php print $title_attributes; ?>><?php print $label ?> <?php print $element['#object']->title; ?>:&nbsp;</div>