Я пытаюсь скрыть заголовок текущей страницы (как напечатано page.tpl.php
), если текущей страницей является 1) узел в полноэкранном режиме (в отличие от тизерного режима), И 2) тип узла - концертный или био . Я печатаю заголовок узла для этих типов содержимого непосредственно в содержимом узла, поэтому я хочу скрыть дубликат, печатаемый с помощью page.tpl.php. Я не могу заставить это работать непосредственно в page.tpl.php, и мое чтение предполагает, что лучше всего обрабатывать логику шаблона в template.php с использованием функций предварительной обработки и процесса. Итак, я пытаюсь скрыть заголовок текущей страницы (с 2 вышеуказанными условиями), используя template_preprocess_page()
. Это мой код
<?php
function MYTHEME_preprocess_page(&$variables) {
if (!empty($variables['node']) && $variables['node']->type == 'concert') {
hide($variables['title']);
}
}
?>
Я читаю Как проверить тип узла для печати переменной из template.php? и страницу документации для template_preprocess_page()
, и для других сайтов, но я просто не могу заставить это работать. Я видел предложения , которые вы должны позвонить isset()
на $variables['node']
перед тестированием для типа узла, но это не сработало. Я не видел четкого решения, размещенного где-либо, и я нахожусь в конце своего остроумия.
$title
переменную с помощьюmytheme_process_page(&$variables) { $title = false; }
.mytheme_process_page(&$variables) { $variables['title'] = false; }
и это работает BTW.<?php print $title; ?>
в<?php if (!$title_hidden): ?>
вы можете просто установить$variables['title_hidden'] = TRUE;
Вы можете управлять этим с помощью drupal_set_title ().
источник
template_preprocess_page()
? Я использовал модуль Theme Developer для проверки дубликата заголовка страницы и подтвердил, что он вызываетсяpage.tpl.php
. Должен ли я подумать об удалении заголовка,page.tpl.php
а затем ДОБАВИТЬ его туда, где я хочу его использоватьtemplate_preprocess_page()
? Я хочу, чтобы заголовок отображался, например, когда страница содержит представление узлов, но не когда страница является отдельным узлом определенного типа / типов.Попробуйте это при условии, что ваше условие корректно :)
источник
$variables['title']
со значением, возвращаемым изdrupal_get_title()
.Менее сложным способом является печать этого в вашем page.tpl.php
Но если вы хотите, чтобы это было динамичным, я бы предложил использовать
preprocess_page
как предложено другими.источник
hide()
используется с массивами рендеринга, а не со строками.В CSS я сделал это с моей темой
В соответствии с рекомендациями http://www.alistapart.com/articles/now-you-see-me/
Почему? Потому что вы все еще хотите иметь заголовок и h1 «видимым» для программ чтения с экрана для обеспечения доступности. Если вы просто лишите значение H1, вы лишите своих слепых и слабовидящих посетителей потенциально важной информации.
источник
предложение mytheme_preprocess_page работает для меня, но если используется
$vars['title_hidden'] = TRUE;
источник
Правильная функция
вместо
источник