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;
}
}
?>Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии 