Статьи

Програмне створення блоку в Drupal 7

У цій замітці ми розглянемо процес програмного створення блоку за допомогою хуков hook_block_info (), hook_block_view (), hook_block_configure () і hook_block_save () на прикладі блоку містить слоган сайту так як за замовчуванням такого блоку в Drupal 7 нету.

Для цієї мети ми напишемо невеликий модуль Slogan block (машинне ім'я sb).

Насамперед створимо файл sb.info:

name = Slogan block description = Add block with site slogan. core = 7. x package = Custom

Також створимо порожній файл sb.module і включимо наш новий модуль.

module і включимо наш новий модуль

Для того щоб оголосити новий блок додамо в файл sb.module хук hook_block_info ():

/ ** * Implements hook_block_info (). * / Function sb_block_info () {$ blocks [ 'site_slogan'] = array ( 'info' => t ( 'Site slogan'), 'cache' => DRUPAL_CACHE_GLOBAL,); return $ blocks; } hook_block_info () - оголошує блоки надаються модулем і встановлює для них налаштування за замовчуванням.

Тепер поставимо нашому сайту тестовий слоган в розділі Site information:

Тепер поставимо нашому сайту тестовий слоган в розділі Site information:

Наступним кроком очистимо кеш і розмістимо блок Site slogan в регіон First sidebar:

Наступним кроком очистимо кеш і розмістимо блок Site slogan в регіон First sidebar:

На даному етапі блок розміщений в регіон і слоган сайту заданий, але нічого не відображається буде так як Drupal не знає що потрібно виводити в цей блок. Для цієї мети ми використовуємо hook_block_view ().

Додамо в файл sb.module наступний код:

/ ** * Implements hook_block_view (). * / Function sb_block_view ($ delta = '') {$ block = array (); switch ($ delta) {case 'site_slogan': $ block [ 'subject'] = t ( 'Site slogan'); $ Block [ 'content'] = variable_get ( 'site_slogan', ''); break; } Return $ block; } hook_block_view () - повертає вміст блоку. Параметр $ delta - унікальний індентіфікатор блоку надається hook_block_info () (в нашому випадку це site_slogan).

Після чергової очищення кешу бачимо відображення нашого блоку на сайті:

За замовчуванням програмно створені блоки мають ті ж самі настройки що і будь-який інший блок: настройки видимості, заголовок блоку і т.д., але ми можемо додавати свої додаткові настройки. В даному випадку буде зручно якщо ми будемо мати можливість редагувати слоган сайту прямо на формі редагування цього блоку.

Для цієї мети ми використовуємо хукі hook_block_configure () і hook_block_save.

Додамо в файл sb.module наступний код:

/ ** * Implements hook_block_configure (). * / Function sb_block_configure ($ delta = '') {$ form = array (); if ($ delta == 'site_slogan') {$ form [ 'site_slogan'] = array ( '#type' => 'textfield', '#title' => t ( 'Site slogan'), '#default_value' = > variable_get ( 'site_slogan', ''),); } Return $ form; } / ** * Implements hook_block_save (). * / Function sb_block_save ($ delta = '', $ edit = array ()) {if ($ delta == 'site_slogan') {variable_set ( 'site_slogan', $ edit [ 'site_slogan']); }} hook_block_configure () - оголошує форму настройки блоку. Параметр $ delta - теж що і для hook_block_view (). hook_block_save () - надає обробник даних прийшли з форми оголошеної в hook_block_configure (). Параметри: $ delta - теж що і для hook_block_view (), $ edit - містить дані прийшли з форми конфігурації блоку.

Так як ми оголосили два нових хука знову чистимо кеш і переходимо на форму редагування блоку Site slogan:

Як бачимо на формі присутній доданий поле Site slogan. Далі змінимо його значення і збережемо форму.

Слоган оновився, значить форма працює правильно.

Повний лістинг файлу sb.module:

<? Php / ** * Implements hook_block_info (). * / Function sb_block_info () {$ blocks [ 'site_slogan'] = array ( 'info' => t ( 'Site slogan'), 'cache' => DRUPAL_CACHE_GLOBAL,); return $ blocks; } / ** * Implements hook_block_view (). * / Function sb_block_view ($ delta = '') {$ block = array (); switch ($ delta) {case 'site_slogan': $ block [ 'subject'] = t ( 'Site slogan'); $ Block [ 'content'] = variable_get ( 'site_slogan', ''); break; } Return $ block; } / ** * Implements hook_block_configure (). * / Function sb_block_configure ($ delta = '') {$ form = array (); if ($ delta == 'site_slogan') {$ form [ 'site_slogan'] = array ( '#type' => 'textfield', '#title' => t ( 'Site slogan'), '#default_value' = > variable_get ( 'site_slogan', ''),); } Return $ form; } / ** * Implements hook_block_save (). * / Function sb_block_save ($ delta = '', $ edit = array ()) {if ($ delta == 'site_slogan') {variable_set ( 'site_slogan', $ edit [ 'site_slogan']); }}

Новости

Как создать фото из видео
Кризис заставляет искать дополнительные источники дохода. Одним из таких источников может стать торговля на валютном рынке Форекс. Но чтобы не потерять свои деньги необходимо работать с надежным брокером.

Как оформить группу в вконтакте видео
Дано хотел свой магазин в вк, но не знал с чего начать его делать. Так как хотелось не банальный магазин с кучей ссылок и фото, а красиво оформленный. С меню, с аватаркой. После просмотра видео создал