[Решено] Вывод региона в node.tpl.php теперь в Drupal 7

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

Аватар пользователя Айдар Айдар 30 декабря 2011 в 12:30

Доброго дня, товарищи!

На орге нашел решение по выводу региона в шаблон node.tpl.php, однако, у меня почему-то не сработало. По аналогии сделал так (код обновлен на корректный):

В template.php добавляем:

<?php
function mytheme_preprocess_node(&$vars) {
if (
$blocks block_get_blocks_by_region('my_region')) {
  
$vars['my_region'] = $blocks;
  
$vars['my_region'] = $blocks;
  
$vars['my_region']['#theme_wrappers'] = array('region');
  
$vars['my_region']['#region'] = 'my_region';
  }
}
?>

В инфо файл темы:

<?php
regions
[my_region]    = My region
?>

В шаблон:

<?php
<div class="content-above">
    <?
php print render($my_region); ?>
    </div>
?>

Однако, ничего не выводит, кроме пустого дива. В то же время на странице списка блоков есть выбор региона, но на странице просмотра регионов (admin/structure/block/demo/my_theme) регион не отображается. Возможно, есть ошибка в коде, добавляемом в template.php?

Комментарии

Аватар пользователя Айдар Айдар 30 декабря 2011 в 14:39

Спасибо!
Все равно не выходит - видимо, нужно что-то вместо <?php print render($content_above); ?> подставлять, но я уже все перепробовал

UPD: проблема у мну была в том, что функцию обозвал 'preprocess_node (&$vars)', а в ней использовались '$variables'.

Аватар пользователя biozz biozz 22 февраля 2012 в 18:20

Нашол альтернативное решение которое намного проще этого, так как это у меня в упор не работало)))

Просто нужно вставить в node.tpl.php

<?php if (block_get_blocks_by_region('my_region')): ?>
<?php print render(block_get_blocks_by_region('my_region')); ?>
<?php endif; ?>

и все))) проверено, работает. И не нужно никаких хуков в template.php

Аватар пользователя chelwolf chelwolf 24 марта 2015 в 18:58

biozz wrote:
Нашол альтернативное решение которое намного проще этого, так как это у меня в упор не работало)))

Просто нужно вставить в node.tpl.php

<?php if (block_get_blocks_by_region('my_region')): ?>
<?php print render(block_get_blocks_by_region('my_region')); ?>
<?php endif; ?>

и все))) проверено, работает. И не нужно никаких хуков в template.php

У меня тоже работает, что-то всё как-то очень легко, в чём подвох?))

Аватар пользователя ser_house ser_house 24 мая 2012 в 21:19

Надеюсь, не совсем некрофилия, но тут всплыло тоже.
Как сделано у меня:

theme.info

  regions[below_node] = Below node

template.php

function THEME_preprocess_node(&$variables) {
  //бла-бла-бла
  $variables['below_node'] = block_get_blocks_by_region('below_node');
}

node.tpl.php

 <!--бла-бла-бла, в том числе и $content-->
<?php print render($below_node); ?>
 <!--остальное бла-бла, в том числе и $content['comments']-->