Здравствуйте, опытные разработчики 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 невозможно никак достать значение этой переменной.
Подскажите как решить эту задачу. Спасибо!
Комментарии
создайте предварительно page--товар.tpl.php и замените <?php print $title; ?> на <?php print render($content['field_h1']); ?>
К сожалению не помогло. Показывает пустое место. Файл подцепляется нормально, добавил содержимое для теста, отобразилось на сайте. А поле не хочет.
попробуйте <?php print render($page['content']['field_h1']); ?> и тд и тп. Смотрите как у вас выводится основное содержимое, разберите массив и найдите нужное поле
В $page не оказалось этого поля для таксономии. Для отдельных товаров есть, а для категории нет. Посмотрел с помощью serialize().
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
<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. А там уже до этого поля.
посмотрите в $content, этот поле должно выводится в содержимое. Потом надо будет удалить unset($content['field_h1']);
Ну могли бы догадаться, что выше нужно получить $term из нужного каталога по его ID
<?php
if ( (arg(0) == 'taxonomy') && (arg(1) == 'term') && (is_numeric(arg(2))) ) {
$term = taxonomy_term_load(arg(2));
...
?>
Вы собираетесь заниматься веб-разработкой, или это ваша курсовая работа за 1 курс социологического факультета? Все нужно разжевать и в рот положить?
Это мой первый день с Друпалом )))
Как всегда читать мануалы некогда, а сделать надо было уже вчера.
Очень сильно благодарю! Сделал
Всем кто откликнулся большое спасибо!
Решено!
А, тогда респект чувак, я был несправедлив