Intereting Posts
Запрос для дочерних узлов Открыть диалоговое окно с сообщением подтверждения в обработчике представления формы Есть ли модуль отчетов об ошибках с этими функциями? Как передать настройки ckeditor в wysiwyg модуль? Где лучше всего вставить дополнительные функции выхода из системы? Переменная, созданная в hook_preprocess_node, недоступна шаблону Почему «Поиск вопроса» модуля «Ответы» не показывает никаких результатов? Как отображать все записи по умолчанию в представлении с открытыми фильтрами Проверить статус db_merge, вставленный или обновленный node_mass_update не обновит поле Как правильно настроить кеширование для моей настраиваемой api-маршрутизации? чрезмерные «запрещенные к доступу» журналы? Elysia cron застрял в состоянии (w) (выполнение будет выполняться) Использование правил для перенаправления на идентификатор url + Уведомление о выпуске текстового формата электронной почты

Сделать блок рендеринга сразу после включения модуля

Я работаю над модулем, который делает небольшой блок в области нижнего колонтитула. Моя цель – заставить его работать из коробки с настройками по умолчанию. Пользователю просто нужно включить его с помощью drush, без необходимости настройки.

В версии Drupal 6 я наткнулся на странную проблему. Похоже, что после включения модуля hook_block не вызывается, поэтому блок не отображается. Он может быть исправлен либо путем выполнения drush cc, либо для блокировки страницы администратора. Все кэширование отключено на тестовом сайте.

Я попытался включить drupal_flush_all_caches и drupal_cache_clear в hook_install без успеха.

Может кто подскажет?

Solutions Collecting From Web of "Сделать блок рендеринга сразу после включения модуля"

После нескольких испытаний я нашел легкое обходное решение:

 function mymodule_enable () {
   _block_rehash ();
 }

Это функция, которую вызывают, затем одно посещение / admin / build / block. Он ресканирует блоки, предоставляемые модулями.

Вам необходимо реализовать hook_install в файле .install для вашего модуля. Вы напишете запись в таблицу блоков, чтобы добавить свой определенный блок в определенный регион по определенной теме всякий раз, когда вы включаете модуль. Вы будете использовать функцию drupal_write_record для записи массива, подобного следующему (или вы можете просто использовать запрос INSERT, хотя и не рекомендуется):

$block = array( 'module' => 'module_name', // your module name 'delta' => 0, // the delta of your block in hook_block 'theme' => 'theme_name', // The name of the theme you'll add the block to 'region' => 'footer', // The system name of the region you'll add it to 'status' => 1, );