hook_block
developer/hooks/core.php, строка 67
- Версии
- 5 – 6
hook_block($op = 'list', $delta = 0, $edit = array())
Определяет блок или набор блоков.
Любой модуль может добавить свои блоки, определив их в hook_block. Этот хук вызывается в theme.inc при отображении блоков, а также в block.module для показа списка доступных блоков.
Начиная с версии 4.7, все свойства блока (за исключением внешнего вида) можно установить с помощью операции 'view'
в хуке hook_block. Вы можете задать порядок отображения (вес), включить или отключить его,
ограничить показ для тех или иных страниц и другое. Эти параметры будут зарегистрированы при первом вызове блока на странице admin/block, а после этого можно изменять их вручную на странице управления блоками.
Обратите внимание, если вы установите недоступный в текущем шаблоне регион для отображения блока, блок будет перенесён в регион «по умолчанию» (первый в массиве _regions).
Функции mymodule_display_block_1 и 2 (из примера в самом низу), должны быть определены где-то внутри вашего модуля и возвращать блок в виде массива array('content' => 'содержимое блока', 'subject' => 'заголовок блока')
. Если значение "content"
будет пустым, блок не выведется, даже если "subject"
будет заполненным.
После завершения написания ваших блоков, не забывайте включить их в разделе блоков на сайте.
Подробный пример использования можно посмотреть в block_example.module.
Параметры
$op
Какой вид информации извлекать о блоке или блоках.
Возможные значения:
'list'
: Список всех блоков, определённых модулем.'configure'
: Форма настройки.'save'
: Сохранить параметры конфигурации.'view'
: Информация об определённом блоке и значения по умолчанию.
$delta
Какой блок вернуть (не используется, если $op
равно 'list'
). Хотя чаще всего это целое, начиная с 0, это не обязательно. Как исключение, aggregator.module использует строковые значения для $delta
$edit
- Если
$op
равно'save'
, отправленные данные формы конфигурации. - В других случаях игнорируется.
Возвращаемое значение
- Если
$op
равно'list'
, возращает массив массивов, каждый из которых должен определять элемент'info'
, описывающий блок. - Если
$op
равно'configure'
, опционально возвращает массив, содержащий форму конфигурации. - Если
$op
равно'save'
, ничего не возвращает. - Если
$op
равно'view'
, возвращает массив, который должен содержать элементы'subject'
и'content'
, определяющие блок с индексом$delta
.
Связанные темы
Код
<?php
function hook_block($op = 'list', $delta = 0, $edit = array()) {
if ($op == 'list') {
$blocks[0] = array('info' => t('Mymodule block #1 shows ...'),
'weight' => 0, 'status' => 1, 'region' => 'left');
$blocks[1] = array('info' => t('Mymodule block #2 describes ...'),
'weight' => 0, 'status' => 0, 'region' => 'right');
return $blocks;
}
elseif ($op == 'configure' && $delta == 0) {
$form['items'] = array(
'#type' => 'select',
'#title' => t('Number of items'),
'#default_value' => variable_get('mymodule_block_items', 0),
'#options' => array('1', '2', '3'),
);
return $form;
}
else if ($op == 'save' && $delta == 0) {
variable_set('mymodule_block_items', $edit['items']);
}
else if ($op == 'view') {
switch($delta) {
case 0:
$block = array('subject' => t('Title of block #1'),
'content' => mymodule_display_block_1());
break;
case 1:
$block = array('subject' => t('Title of block #2'),
'content' => mymodule_display_block_2());
break;
}
return $block;
}
}
?>
Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии