Drupal 7: Как вставить регион в ноду?

Я очень люблю использовать регионы ВНУТРИ ноды, т.е. например, между основным содержимым и комментариями. Недавно пришлось довольно долго гуглить, пока я не нашла работающий рецепт для Drupal 7.

Итак, во-первых, заявляем регион в файле theme.info...

regions[BLOCK_REGION_NAME] = Block region name

Во-вторых, добавляем следующий сниппет в ваш template.php, в функцию preprocess_node

/**
* Implements template_preprocess_node().
*/
function YOUR_THEME_preprocess_node(&$vars) {
  // Add 'After node' block region inside node.
  if ($block_region_name = block_get_blocks_by_region('BLOCK_REGION_NAME')) {
    $vars['BLOCK_REGION_NAME'] = $block_region_name;
  }
}

Тут главное не забыть поменять BLOCK_REGION_NAME на машинное имя региона, который вы указали на первом шаге. А то я вот поменять забыла и потратила еще минут 20 на отладку :)))

И третье - добавить следующий код в ваш node.tpl.php

<?php if ($BLOCK_REGION_NAME): ?>
  <div class="blablabla">
    <?php print render($BLOCK_REGION_NAME); ?>
  </div>
<?php endif; ?>

Спасибо, Kahthong.com за рецепт!!!

Главные темы: 

Комментарии

Однако... появилась ошибка error_notice! Избавиться можно (вроде как, не пробовала пока) по http://www.citytree.be/blog/undefined-index-quick-fix-in-drupal7-error-r...

Не к месту конечно, но очень интересно и даже приятно, когда девушка говорит о коде )))Кстати, очень хорошая форма отправки комментария. Я тоже себе такую хочу. А то стандартную друпаловскую даже включать не хочется

Спасибо за наводку, а то уже строил грандиозные планы по решению задачи.

спасибо! помогло!

вот единственное дополнение, чтобы не вылазило ошибок Notice: Undefined variable:, нужно этот момент -
<?php if ($BLOCK_REGION_NAME): ?>
<div class="blablabla">
<?php print render($BLOCK_REGION_NAME); ?>
</div>
<?php endif; ?>

писать так -

<?php if (isset($BLOCK_REGION_NAME)): ?>
<div class="blablabla">
<?php print render($BLOCK_REGION_NAME); ?>
</div>
<?php endif; ?>

Супер, спасибо!!!

Комментарии

CAPTCHA
This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.