У цій замітці ми розглянемо процес програмного створення блоку за допомогою хуков hook_block_info (). hook_block_view (). hook_block_configure () і hook_block_save () на прикладі блоку містить слоган сайту так як за замовчуванням такого блоку в Drupal 7 нету.
Для цієї мети ми напишемо невеликий модуль Slogan block (машинне ім'я sb).
Насамперед створимо файл sb.info:
Також створимо порожній файл sb.module і включимо наш новий модуль.
Для того щоб оголосити новий блок додамо в файл sb.module хук hook_block_info ():
hook_block_info () - оголошує блоки надаються модулем і встановлює для них налаштування за замовчуванням.
Тепер поставимо нашому сайту тестовий слоган в розділі Site information:
Наступним кроком очистимо кеш і розмістимо блок Site slogan в регіон First sidebar:
На даному етапі блок розміщений в регіон і слоган сайту заданий, але нічого не відображається буде так як Drupal не знає що потрібно виводити в цей блок. Для цієї мети ми використовуємо hook_block_view ().
Додамо в файл sb.module наступний код:
hook_block_view () - повертає вміст блоку. Параметр $ delta - унікальний індентіфікатор блоку надається hook_block_info () (в нашому випадку це site_slogan).
Після чергової очищення кешу бачимо відображення нашого блоку на сайті:
За замовчуванням програмно створені блоки мають ті ж самі настройки що і будь-який інший блок: настройки видимості, заголовок блоку і т.д. але ми можемо додавати свої додаткові настройки. В даному випадку буде зручно якщо ми будемо мати можливість редагувати слоган сайту прямо на формі редагування цього блоку.
Для цієї мети ми використовуємо хукі hook_block_configure () і hook_block_save.
Додамо в файл sb.module наступний код:
hook_block_save () - надає обробник даних прийшли з форми оголошеної в hook_block_configure (). Параметри: $ delta - теж що і для hook_block_view (). $ Edit - містить дані прийшли з форми конфігурації блоку.
Так як ми оголосили два нових хука знову чистимо кеш і переходимо на форму редагування блоку Site slogan:
Як бачимо на формі присутній доданий поле Site slogan. Далі змінимо його значення і збережемо форму.
Слоган оновився, значить форма працює правильно.
Повний лістинг файлу sb.module: