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

Вход в систему