xandeadx.ru Блог музицирующего веб-девелопера

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;
  }
}
Написанное актуально для Drupal 6, Drupal 7
Похожие записи

Комментарии RSS

а как теперь к этому блоку добавить текстовое поле и кнопку и по клику кнопки менять значение а после перезагрузки страницы загружать значение ?

Чуть дополнить:
1. Не работают длинные имена:
$blocks['mymodule-hello-message-и-ещё-что-нибудь'] - выдаст ошибку. Сколько максимум символов я не знаю...)))
2. Кеш очишается только после удаления блока!
Например хочется новое имя блока: $blocks['hello-message-новое-имя'] - изменяем в коде модуля, а старый код drupal помнит...))) drush cc all - не поможет.
Это можно увидеть, если в hook_block_view() - в дельте не менять проверку на новое имя блока.

Оставить комментарий

Содержимое этого поля является приватным и не будет отображаться публично. Если у вас есть аккаунт в Gravatar, привязанный к этому e-mail адресу, то он будет использован для отображения аватара.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступные HTML теги: <a> <i> <b> <strong> <code> <ul> <ol> <li> <blockquote> <em> <s>
  • Строки и параграфы переносятся автоматически.
  • Подсветка кода осуществляется с помощью тегов: <code>, <css>, <html>, <ini>, <javascript>, <sql>, <php>. Поддерживаемые стили выделения кода: <foo>, [foo].

Подробнее о форматировании