Создание, продвижение сайтов
компьютерная поддержка
53-02-63

Вывод отдельных блоков в region.tpl.php

14 января 2017

По умолчанию в region.tpl.php приходит уже отрендеренный html всех блоков, доступный в переменной $content. Вывести отдельные блоки можно (они лежат в $elements), но нельзя поступить как в node.tpl.php — сначала вывести нужное, а потом просто сделать echo render($content); для вывода всего остального.

Поколдуем немножко:

/**
 * Implements hook_page_alter().
 */
function THEMENAME_page_alter(&$page) {
  foreach (element_children($page) as $region_name) {
    if ($page[$region_name] && isset($page[$region_name]['#region'])) {
      $page[$region_name]['#theme'] = 'region';
      unset($page[$region_name]['#theme_wrappers']);
    }
  }
}
 
/**
 * Preprocess function for region.tpl.php.
 */
function THEMENAME_preprocess_region(&$vars) {
  $vars['content'] = array();
  foreach (element_children($vars['elements']) as $block_key) {
    $vars['content'][$block_key] = $vars['elements'][$block_key];
  }
 
  if ($suggestions = theme_get_suggestions(arg(), 'region__' . $vars['region'])) {
    $vars['theme_hook_suggestions'] = array_merge($vars['theme_hook_suggestions'], $suggestions);
  }
}
 
/**
 * Override region.tpl.php.
 */
function THEMENAME_region($vars) {
  if ($vars['content']) {
    return '
      <div class="' . $vars['classes'] . '">
        ' . render($vars['content']) . '
      </div>
    ';
  }
}

Теперь в region.tpl.php или в THEMENAME_region() можно рендерить отдельные блоки, плюс добавляется возможность переопределять регионы на основе текущего пути, как в page.tpl.php.

Пример переопределения региона content на главной странице (файл region--content--front.tpl.php):

<div class="<?php echo $classes; ?>">
  <div class="section-one">
    <?php echo render($content['block_1']); ?>
    <?php echo render($content['block_2']); ?>
  </div>
  <div class="section-two">
    <?php echo render($content['block_3']); ?>
  </div>
  <div class="section-three">
    <?php echo render($content); ?>
  </div>
</div>

P.S: чего только не придумаешь, чтобы не использовать Panels 

Узнайте о нас больше:

Мы предлагаем широкий спект услуг по сайтам и компьютерной поддержке

Создание сайтов

Мы разрабатываем как простые сайты - визитки, так и индивидуальные проекты. Основная система разработки - CMS Drupal.

Узнать подробнее

Продвижение сайтов

Одно из основных направлений работы нашей компании - продвижение сайтов в Саратове и области. Мы поможем Вам с SEO - продвижением сайтов и настройкой и ведением контекстной рекламы в Яндекс Директ.

Бесплатная SEO-консультация

Компьтерная поддержка

Мы оказываем услуги компаниям и частным лицам в области настройки компьютерного оборудования:

  • Настройка роутеров и локальных сетей
  • Установка Windows
  • Оптимизация работы компьютеров
  • Лечение вирусов
  • Восстановление данных с жестких дисков
Узнать подробнее
Сделайте заказ с сайта и получите 10% скидку на услугу

Заказ услуги с сайта raybin.ru

Нажимая на кнопку "Получить консультацию", я даю согласие на обработку персональных данных и соглашаюсь c условиями политики конфиденциальности
Заказать бесплатную SEO-консультацию

Запрос бесплатной SEO - консультации с сайта raybin.ru

Нажимая на кнопку "Получить консультацию", я даю согласие на обработку персональных данных и соглашаюсь c условиями политики конфиденциальности
Письмо в компанию Райбин

Письмо в компанию RAYBIN

Нажимая на кнопку "Получить консультацию", я даю согласие на обработку персональных данных и соглашаюсь c условиями политики конфиденциальности