Регион в документе

Оглавление 

По умолчанию, Друпал даёт возможность создать любое количество регионов на странице. Но, что если вы захотите поместить регион в документ? Или как сделать регион который располагался бы между документом и комментариями? Сделать это достаточно просто.

Друпал 6

1. Добавьте регион в .info-файл темы:

regions[header] = Header
regions[left] = Left sidebar
regions[right] = Right sidebar
regions[content] = Content
regions[footer] = Footer
regions[node_region] = Node region

2. Сделайте переменную $node_region доступной в файле node.tpl.php используя функцию _preprocess_node():

<?php
function [название-темы]_preprocess_node(&$variables, $hook) {
 
$variables['node_region'] = theme('blocks', 'node_region');
}
?>

3. Добавьте переменную $node_region в файл node.tpl.php в то место, где вы хотите чтобы выводился регион, например:

<div class="content"><?php print $content; ?></div>
  <?php if ($node_region) { ?>
      <div class="node_region"><?php print $node_region; ?></div>
   <?php }; ?>
   <?php if ($links) { ?>
      <div class="links"><?php print $links; ?></div>
   <?php }; ?>

4. Очистите кеш.

Друпал 5

1. Определите регионы в файле template.php используя hook_regions():

<?php
function [название-темы]_regions() {
  return array(
      
'left_sidebar' => t('left sidebar'),
      
'right_sidebar' => t('right sidebar'),
      
'header' => t('header'),
      
'footer_message' => t('footer'),
      
'content' => t('content'),
      
'node_region' => t('node region'),
  );
}
?>

2. Сделайте переменную $node_region доступной в файле node.tpl.php используя функцию _phptemplate_variables():

<?php
function _phptemplate_variables($hook, $variables) {
  if (
$hook == 'node') {
   
$variables['node_region'] = theme('blocks', 'node_region');
  }
  return
$variables;
}
?>

3. Добавьте переменную $node_region в файл node.tpl.php в то место, где вы хотите чтобы выводился регион, например:

<div class="content"><?php print $content; ?></div>
  <?php if ($node_region) { ?>
      <div class="node_region"><?php print $node_region; ?></div>
   <?php }; ?>
   <?php if ($links) { ?>
      <div class="links"><?php print $links; ?></div>
   <?php }; ?>