Drupal → Как программно создать блок
Пример создания простейшего блока в Drupal 7:
/** * Implements hook_block_info(). * Информация о блоке и дефолтные настройки. */ function mymodule_block_info() { $blocks['hello-message'] = array( 'info' => t('Message'), ); return $blocks; } /** * Implements hook_block_view(). * Генерация заголовка блока и его контента. */ function mymodule_block_view($delta = '') { $block = array(); if ($delta == 'hello-message') { $block['subject'] = t('Message'); $block['content'] = t('Hello World!'); } return $block; }
Более продвинутый пример.
Видео урок.
Пример создания простейшего блока в Drupal 6:
/** * Implements hook_block(). */ function mymodule_block($op = 'list', $delta = 0, $edit = array()) { if ($op == 'list') { $blocks[0] = array('info' => 'Message'); return $blocks; } else if ($op == 'view') { if ($delta == 0) { $block = array( 'subject' => t('Message'), 'content' => t('Hello World!'), ); } return $block; } }
Комментарии
а как теперь к этому блоку добавить текстовое поле и кнопку и по клику кнопки менять значение а после перезагрузки страницы загружать значение ?
Form API Quickstart Guide
Чуть дополнить:
1. Не работают длинные имена:
$blocks['mymodule-hello-message-и-ещё-что-нибудь'] - выдаст ошибку. Сколько максимум символов я не знаю...)))
2. Кеш очишается только после удаления блока!
Например хочется новое имя блока: $blocks['hello-message-новое-имя'] - изменяем в коде модуля, а старый код drupal помнит...))) drush cc all - не поможет.
Это можно увидеть, если в hook_block_view() - в дельте не менять проверку на новое имя блока.
Оставить комментарий