Я использую Drupal 7. Прямо сейчас у меня есть заголовок меню и переключатель языка, который существует в заголовке моего сайта. Я разместил их там, перейдя в CMS> Структура> Блоки и перетаскивая блоки в область заголовка.
Как программно расположить эти блоки в заголовке?
block_example_block_info()
'region' может быть полезным для проверки.Ответы:
Чтобы изменить область, в которой находятся блоки, определенные другими модулями, вы можете реализовать функцию hook_block_info_alter () , которая получает следующие аргументы:
$blocks
(передается по ссылке): массив, содержащий определения блоков с ключами по модулю и дельта$theme
: тема, для которой определяются блоки$code_blocks
: блоки, определенные вhook_block_info()
реализациях, перед тем как их значения будут переопределены значениями, полученными из базы данныхисточник
Допустимо добавлять отображаемый массив в любой регион страницы в hook_page_build (). Пример Drupal 7 для добавления минипанели в область нижнего колонтитула.
Это та же самая техника, которая использует контекстный модуль.
Примечание: для этого вам не нужно включать block.module.
источник
В D6 это было бы по существу
В D7 я думаю, что это
но я все еще набираю скорость на D7.
источник
drupal_add_region_content()
, это тупик, так как он предназначен для страниц установки / обновления.Если вы добавляете пользовательский блок, вы делаете это с помощью hook_block_info, устанавливая опцию status в 1, а опцию region - в регион, в который вы хотите поместить блок.
Пример:
Если вы хотите изменить уже существующий блок, вместо этого вы должны использовать hook_block_info_alter (), обновив те же опции, как показано ниже.
Пример:
Для получения дополнительной информации см. Https://api.drupal.org/api/drupal/modules%21block%21block.api.php/function/hook_block_info/7.
источник
Этот код основан на @ jonhattan's, но он не отображает контейнерный блок HTML или контекстные ссылки. Я также предоставил простой способ указать все блоки и регионы в одном месте.
Примечание: в отличие от его кода, вам действительно нужно установить block.module.
источник
Это не лучшая форма, но вы можете вручную поместить содержимое в массив страниц, как это ...
Хотя вы должны придерживаться контекста или только основных блоков. Создание новых плагинов не так плохо, как кажется. Просто назовите файлы правильно, настройте триггер и тест. пример .
источник
Вы также можете настроить блоки в вашей теме, как:
источник