[РЕШЕНО] Заменить H1 в page.tpl.php на значение из произвольного поля таксономии

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

Аватар пользователя stepanych stepanych 2 сентября 2014 в 10:50

Здравствуйте, опытные разработчики Drupal!

Я чайник в Drupal.

Сайт на Drupal 7. Тема своя. Страница формируется в page.tpl.php (все страницы формируются там).
Реализован каталог продукции.
По умолчанию поля Title, H1 и название (таксономии, продукта) совпадают и содержатся в одном поле.
С помощью СЕО-модуля (не знаю какого) Title отделен и формируется по отдельному полю.

В page.tpl.php есть:

<?php if ($title): ?>
<h1 class="title" id="page-title"><?php print $title?></h1>
<?php endif; ?>

В свойствах таксономии (для категории товаров и самих товаров) добавлено новое поле field_h1. Оно настроено, везде добавлено, отдельно отображается.

Необходимо заменить H1 значением из этого поля.

Пробовал различные варианты через THEME_preprocess_page и THEME_preprocess_html в template.php, но в page.tpl.php невозможно никак достать значение этой переменной.

Подскажите как решить эту задачу. Спасибо!

Комментарии

Аватар пользователя stepanych stepanych 2 сентября 2014 в 11:53

voviko wrote:
создайте предварительно page--товар.tpl.php и замените <?php print $title; ?> на <?php print render($content['field_h1']); ?>

К сожалению не помогло. Показывает пустое место. Файл подцепляется нормально, добавил содержимое для теста, отобразилось на сайте. А поле не хочет.

Аватар пользователя voviko voviko 2 сентября 2014 в 12:08

попробуйте <?php print render($page['content']['field_h1']); ?> и тд и тп. Смотрите как у вас выводится основное содержимое, разберите массив и найдите нужное поле

Аватар пользователя stepanych stepanych 2 сентября 2014 в 13:19

voviko wrote:
попробуйте <?php print render($page['content']['field_h1']); ?> и тд и тп. Смотрите как у вас выводится основное содержимое, разберите массив и найдите нужное поле

В $page не оказалось этого поля для таксономии. Для отдельных товаров есть, а для категории нет. Посмотрел с помощью serialize().

Аватар пользователя marazmus marazmus 2 сентября 2014 в 13:15

template.php
_preprocess_page

<?php
$catalog_h1 = field_get_items('taxonomy_term', $term, 'field_catalog_h1');
$vars['catalog_h1'] = $catalog_h1[0]['value'];
?>

page.tpl.php

  <?php if (isset($catalog_h1)) : ?>
  <h1 class="title"><?php print $catalog_h1; ?></h1>
  <?php elseif ($title): ?>
  <h1 class="title"><?php print $title; ?></h1>
  <?php endif; ?>
Аватар пользователя stepanych stepanych 2 сентября 2014 в 13:31

marazmus wrote:
template.php
_preprocess_page

<?php
$catalog_h1 = field_get_items('taxonomy_term', $term, 'field_catalog_h1');
$vars['catalog_h1'] = $catalog_h1[0]['value'];
?>

page.tpl.php

  <?php if (isset($catalog_h1)) : ?>
  <h1 class="title"><?php print $catalog_h1; ?></h1>
  <?php elseif ($title): ?>
  <h1 class="title"><?php print $title; ?></h1>
  <?php endif; ?>

Отказался вообще что-либо показывать.
Ошибка на field_fet_item «EntityMalformedException: Отсутствует связующее свойство у сущности типа taxonomy_term. в функции entity_extract_ids()»
Почему-то $term не видит. По аналогии с _preprocess_html вызвал
$term = taxonomy_term_load($args[2]);, не помогло.
Добавил произвольную переменную в $vars с константным значением, вывести удалось.
Значит осталось получить доступ к $term. А там уже до этого поля.

Аватар пользователя voviko voviko 2 сентября 2014 в 13:47

посмотрите в $content, этот поле должно выводится в содержимое. Потом надо будет удалить unset($content['field_h1']);

Аватар пользователя marazmus marazmus 2 сентября 2014 в 13:57

"stepanych" wrote:
Ошибка на field_fet_item «EntityMalformedException: Отсутствует связующее свойство у сущности типа taxonomy_term. в функции entity_extract_ids()»
Почему-то $term не видит

Ну могли бы догадаться, что выше нужно получить $term из нужного каталога по его ID Smile

<?php
if ( (arg(0) == 'taxonomy') && (arg(1) == 'term') && (is_numeric(arg(2))) ) {
$term = taxonomy_term_load(arg(2));
...
?>

Вы собираетесь заниматься веб-разработкой, или это ваша курсовая работа за 1 курс социологического факультета? Все нужно разжевать и в рот положить?

Аватар пользователя stepanych stepanych 2 сентября 2014 в 16:49

Это мой первый день с Друпалом )))
Как всегда читать мануалы некогда, а сделать надо было уже вчера.
Очень сильно благодарю! Сделал Smile