Перемещение блока (просмотр) в другой регион программно (Drupal 7)

Я использую Commerce Kickstart Distribution из Drupal 7. Я хочу, чтобы панель поиска была назначена другому региону на главной странице, чем на всех других сайтах в моей теме. Я использовал подход, показанный здесь: http://saw.tl/drupal/programmatically-manage-drupal-blocks.html

function mytheme_hook_block_info_alter(&$blocks, $theme, $code_blocks)
{
if(drupal_is_front_page()) {
$blocks['views]['-exp-display_products-page']['region'] = "branding";
}
}

Это функция в моем template.php. Я знаю, что панель поиска создается с использованием модуля views и не является «блоком по умолчанию».

Имя, отображаемое в меню «Блок» для панели поиска: Exposed form: display_products-page, имя модуля и имя компьютера, которые я выбрал, следуя этому уроку http://drupalchamp.org/node/166

Тем не менее, это не работает вообще. Я не получаю никаких ошибок или предупреждений, блок просто остается в регионе по умолчанию, когда я загружаю первую страницу.

0

Решение

Вы можете использовать модуль Context для добавления блоков в разные регионы в зависимости от некоторых критериев:

https://www.drupal.org/project/context

Очень мощный и простой в использовании модуль, поэтому я советую его.

И если вы предпочитаете делать это из кода, вы можете получить содержимое блока и распечатать его непосредственно из шаблона, в зависимости от обнаруженной страницы. Что-то вроде:

$block = module_invoke('views', 'block_view', 'block_machine_name');
print render($block);

Конечно, вы бы выполнили это условно …

0

Другие решения

Других решений пока нет …