Добавление региона в теме для Drupal`a

Сразу следует отметить, что рассматриваемый метод подойдет для Друпала 6-й версии (Drupal 6.x).

Для начала еще раз кратко опишу задачу. Необходимо создать регион, в котором можно размещать блоки. Регион должен быть размещен только в ноде, сразу после текста (content), но до комментариев.

Все изменения, проводятся только на уровне темы оформления. В нашем случае это была тема Aurora, найденная на drupal.org. Но идея одинакова для всех тем.

Вначале необходимо определить новый регион в info-файле (в нашем случае - aurora.info). Добавляем в него следующую строчку:

regions[inline] = Inline

Затем указываем вывод региона в шаблоне ноды. Для этого в файле node.tpl.php необходимо прописать следующее:

<?php if ($inline && !$teaser): ?>
<?php print $inline ?>
<?php
endif; ?>

В нашем случае мы написали этот код в самом конце, после вывода links. Как видно, в первой строчке кода осуществляется проверка на тизер. Нам необходимо выводить регион только в полном выводе ноды, а не в тизере. Если не будет этой проверки, регион будет выводиться в любом отображении ноды. Кроме того, можно обернуть вывод региона (вторая строчка в нашем коде) в тег div, чтобы применить к нему класс из style.css. Но это уже по желанию.

И последнее, что необходимо сделать, - модифицировать функцию your_theme_preprocess_node (где your_theme - название вашей темы) в файле template.php. Добавляем в эту функцию следующее:

$vars['inline'] = theme('blocks', 'inline');

В нашем случае эта функция получила такой вид:

function aurora_preprocess_node(&$vars) {
// Send a new variable, $has_terms, to see wether the current node has any terms
$vars
['has_terms'] = count(taxonomy_node_get_terms($vars['node'])) > 0;
$vars['inline'] = theme('blocks', 'inline');
return $vars;
}

После всех этих манипуляций рекомендую на всякий случай сбросить кэш в друпале. Теперь на странице конфигурирования блоков появится регион Inline.

Автора автора