xandeadx.ru Блог музицирующего веб-девелопера

Drupal → Переместить заголовок страницы в блок content

Опубликовано в

В семёрке контент является блоком, а его заголовок почему то отдельным элементом в page.tpl.php. Чтобы это исправить, нужно во первых, добавить в template.php:

/**
 * Реализация hook_preprocess_block().
 */
function [THEMENAME]_preprocess_block(&$vars) {
  if ($vars['block_html_id'] == 'block-system-main') {
    $vars['elements']['#block']->subject = drupal_get_title();
  }
}

а во вторых, удалить из page.tpl.php вывод переменной $title.

Написанное актуально для Drupal 7
Похожие записи

Комментарии RSS

Заголовок был отдельным элементом и во всех предыдущих версиях и это всегда меня удивляло. То есть контент ноды выводился в шаблоне node.tpl.php, а заголовок — в page.tpl.php. Причем никакого разумного объяснения этому не было. Видимо, несмотря на все глубокие изменения в 7-ке, разработчики не решились попутно исправить засевшие в коде несуразности.

в шестёрке в этом ещё был какой-то смысл — нода это лишь частный случай страницы, заголовки у другого типа контента ведь тоже надо выводить :) а в семёрке видимо об этом не задумывались, мол так привычнее

извините, что немного не по теме, а как вывести $title внутри блока с использованием php фильтра?

echo drupal_get_title();

Хотел в одном месте, то есть в одной функции переопределить $head_title и $title
так нет, пришлось в две фукции влезать:

function [THEMENAME]_preprocess_html(&$variables) {
   // Изменить title cтраницы 
   $arg = arg();
  if( isset($arg[0]) && isset($arg[1]) && isset($arg[2]) ) {
    if($arg[0] == 'node' && $arg[1] == 'add' && $arg[2] == 'page' ) {
      $variables['head_title'] = 'Новый заголовок | '.$variables['head_title_array']['name'];
    }  
  }  
}
 
function [THEMENAME]_process_page(&$variables) {
  $arg = arg();
  if( isset($arg[0]) && isset($arg[1]) && isset($arg[2]) ) {
    if($arg[0] == 'node' && $arg[1] == 'add' && $arg[2] == 'page' ) {
      $variables['title'] = 'Новый заголовок';
    }  
  }
}

Может можно как то из [THEMENAME]_preprocess_html передать title в [THEMENAME]_process_page?
А то тут http://api.drupal.org/api/drupal/includes!theme.inc/function/template_process_page/7
её просто берут и из ничего создают
  if (!isset($variables['title'])) {
    $variables['title'] = drupal_get_title();
  }

drupal_set_title()

Добрый день!

У меня данный способ не работает.

В Content ничего не появляется!

Подскажите в чем может быть проблема?

Спасибо! Все получилось, на конец-то!!!
А к предыдущему комментарию могу сказать что надо отключить модуль Exclude node title если устанавливал.
Странно что с 2013 года эта проблема еще актуальна!

Подскажите. Мне title надо поставить ниже некоторых элементов views. Но он всегда сверху. Попытки перемещать title в шаблонах views views-view-имя.tpl.php или связанного с ним шаблона типа материала page--тип.tpl.php успеха не принесли.

Решение данной статьи тоже не помогли. Как title сделать свободным для перемещений по странице для views ?

Оставить комментарий

Содержимое этого поля является приватным и не будет отображаться публично. Если у вас есть аккаунт в Gravatar, привязанный к этому e-mail адресу, то он будет использован для отображения аватара.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступные HTML теги: <a> <i> <b> <strong> <code> <ul> <ol> <li> <blockquote> <em> <s>
  • Строки и параграфы переносятся автоматически.
  • Подсветка кода осуществляется с помощью тегов: <code>, <css>, <html>, <ini>, <javascript>, <sql>, <php>. Поддерживаемые стили выделения кода: <foo>, [foo].

Подробнее о форматировании