Как программно создать блок в Drupal7

Так как же программно создать блок. Для создания собственного блока в Drupal 7.x нужно зделать 4 вещи:

1) Создать папку с именем модуля.

Как пример мы создадим блок который будет выводить ссылки для входа на сайт и выхода. Назвем наш модуль custom_login. Соответственно нужно назвать папку custom_login.

2) Создать файл с расширением .info.

Создадим файл custom_login.info. Нужно назвать файл так как называется модуль. Далее поместим следующий текст в даный файл.

name = Custom Login
description = This module provides a custom block with Login links
package = Other
core = 7.x

name - Имя модуля
description - Описание модуля, которое будет видно на странице подулей
package - Отвечает за то, в какой групе модулей будет находится ваш модуль, в моем варианте это група Other
core - Какая версия друпала поддерживает даный модуль

3) Создать файл с расширением .module. И реализовать необходимые хуки.

Создаем файл custom_login.module. Для того, что бы создать простой блок, нам необходимо реальзовать всего лишь два обработчика, а именно hook_block_info() i hook_block_view().


/**  * Implements hook_block_info().  */
function custom_login_block_info() {   $blocks['custom_login'] = array(     'info' => t('Custom Login'),     'cache' => DRUPAL_CACHE_GLOBAL,   );     return $blocks; } /**  * Implements hook_block_view().  */ function custom_login_block_view($delta = '') {   $block = array();  
  switch ($delta) {     case 'custom_login':       $block['subject'] = t('Custom Login');       $block['content'] = _custom_login_content();       break; }   return $block; }   function _custom_login_content() {   global $user;   if ($user->uid == 0) {     return "".t('Вход')."";   } else {     return "".t('Выход')."";   } }

hook_block_info() - объявляет блоки предоставляемые модулем и устанавливает для них настройки по умолчанию.
hook_block_view() - возвращает содержимое блока. Параметр $delta - уникальный индентификатор блока предоставляемый.

4) Включить модуль в блоках и розместить его там где вы хотите.

LikeMe: