hook_block
developer/hooks/core.php, строка 169
- Версии
- 5 – 6
hook_block($op = 'list', $delta = 0, $edit = array())
Определяет блок или набор блоков.
Любой модуль может добавить свои блоки, определив их в hook_block. Этот хук вызывается в theme.inc при отображении блоков, а также в block.module для показа списка доступных блоков.
После завершения написания ваших блоков, не забывайте включить их в разделе администрирования блоков на сайте.
Подробный пример использования можно посмотреть в block_example.module.
Параметры
$op
Какого рода информацию о блоках требуется вернуть. Возможные значения:
'list': Список всех блоков данного модуля.'configure': Форм настроек для блока.'save': Сохранить настройки блока.'view': Требуется вернуть содержимое блока для отображения в нужном разделе страницы.
$delta
Информацию о каком блоке нужно вернуть (для всех операций $op кроме 'list'). Хотя чаще всего блоки нумеруются целыми числами начиная с нуля , но это не обязательно. К примеру, модуль aggregator.module использует строки в качестве значений $delta.
$edit
Если $op равно 'save', в этом параметре хранятся данные из формы настройки. В остальных случаях массив пуст.
Возвращаемое значение
$op = 'list': Массив с описаниями всех блоков модуля. Каждое из описаний это ассоциативный массив с такими ключами:'info': (обязательно) Имя блока для отображения в административном интерфейсе.'cache': Флаги, описывающае поведение блока с точки зрения системы кеширования. Модуль block.module определяет таки флаги:BLOCK_CACHE_PER_ROLE(значение по умолчанию): Содержимое блока меняется в зависимости от роли пользователя, просматривающего его.BLOCK_CACHE_PER_USER: Содержимое блока меняется в зависимости от пользователя, просматривающего блок. Блок с этим флагом может потребовать очень много ресурсов для отображения, особенно для крупных сайтом, поэтому этот флаг стоит использовать только в случае, если флагBLOCK_CACHE_PER_ROLEиспользовать нельзя.BLOCK_CACHE_PER_PAGE: Содержимое блока меняется в зависимости от страницы, на которой он отображается.BLOCK_CACHE_GLOBAL: Содержимое блока не зависит ни от пользователя, просматривающего блок, ни от страницы, на которой блок отображен.BLOCK_NO_CACHE: Блок не нужно кешировать.
'weight','status','region','visibility','pages': Для блока (заданного параметром$delta) можно явно указать вес, включить/выключить его, ограничить отображение только на заданных страницах, и т.п. Эти установки вступят в действие при первом отображении блока в интерфейсе администрирования, после чего администратор сможет их изменить.Заметим, что если для блока задано отображение в области, отсутствующей в данной теме, блок будет помещен в область по умолчанию (первый элемент массива
_regionsв описании темы).
$op = 'configure': Необязательная форма настройки для блока.$op = 'save': Ничего.$op = 'view': Ассоциативный массив, описывающий блок (заданный параметром$delta). Ключ'subject'этого массива должен задавать заголовок блока, а'content'— его содержимое. Если значение'content'будет пустым, блок не выведется, даже если'subject'будет заполнен.
Связанные темы
Код
<?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');
// BLOCK_CACHE_PER_ROLE will be assumed for block 0.
$blocks[1] = array('info' => t('Mymodule block #2 describes ...'),
'cache' => BLOCK_CACHE_PER_ROLE | BLOCK_CACHE_PER_PAGE);
return $blocks;
}
else if ($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;
}
}
?>
$block = array('subject' => t('Title of block #2'),
'content' => mymodule_display_block_2());
что значит "mymodule_display_block_2());"?????????
и как ее лучше описать?
mymodule_display_block_2() - это функция, которая создает и возвращает контент блока.