Page title работает только на странице редактирования [РЕШЕНО]

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

Аватар пользователя Zoxx Zoxx 3 февраля 2012 в 14:03

Надо вывести в тайтл следующую конструкцию: Название документа | Тип документа | Имя сайта

По описанию, да и по содержимому страницы настроек модуль Page Title вписался идеально, но возникла проблема: тайтл меняется только на странице редактирования ноды, а при просмотре документа остаётся прежним. При этом настройки модуля для дефолтного заголовка на него влияют (например, если убрать оттуда название сайта и оставить только тайтл самой страницы, то на странице ноды в тайтле останется лишь её название).
В чём может быть проблема?
UPDATE: модуль так и не заработал, так что отказался от него. Ниже, в комментариях код решения - сниппет для вставки в template.php вашей темы

Комментарии

Аватар пользователя Zoxx Zoxx 5 февраля 2012 в 18:49

Можно ли эту проблему решить как-то иначе? Подскажите пример. Знаю, что есть решившие, искал по сайту. Вот только результатом никто не поделился

Аватар пользователя Zoxx Zoxx 6 февраля 2012 в 22:23

Решение проблемы:

<?php
/* меняем название темы на своё */
function НазваниеТемыСайта_preprocess_page(&$variables) {
if (
drupal_get_title()) {
    
$head_title = array(strip_tags(drupal_get_title()));
/* Определяем, находимся ли мы на странице документа */    
     
if (arg(0) == 'node' && is_numeric(arg(1))) {    
          
$nid arg(1);
          
$node node_load(array('nid' => $nid));
              
$type $node->type
/*Машинное название типа документа(меняем на своё)*/
           
if ($node->type == 'news') {
/*"Человекочитабельное" название типа документа 
(также меняем на своё)*/
             
$type t('Новости');
                 
$head_title[] = $type;    
          }      
     }     
$head_title[] = variable_get('site_name''Drupal');
  }

/* Далее стандартная часть: то, что выводится
если мы не на странице документа */
else {
    
$head_title = array(variable_get('site_name''Drupal'));
    if (
variable_get('site_slogan''')) {
      
$head_title[] = variable_get('site_slogan''');
    }
  }
/* Здесь определяется разделитель для составляющих тайтла. 
Палку можно заменить на что-то иное */
  
$variables['head_title'] = implode(' | '$head_title);
}
?>

Данный код нужно поместить в template.php
Поменять название темы и типов документа на свои. Участок кода, отвечающий за определение типа материала и вывод соответствующего текста можно копировать, подставляя значения других типов (если вам требуется переопределить вывод для нескольких типов документов).
Приветствуются доработка, особенно в плане вывода человеческого названия типа материала непосредственно через переменные, а не вручную.