Создаём модуль drupal 7 с програмным созданием блока

Решил написать статейку о том как создаются блоки...

Я уже писал о том, как создать модуль для использования AJAX в drupal7.

Теперь же речь пойдёт о том, как создать модуль для вывода блока.

Возможно вы удивлены, ведь блок можно создать простыми средствами drupal, но иногда возникает ситуация, что проще один раз написать блок, а потом его просто устанавливать в виде модуля drupal.

Этим и займёмся. Писать будем на примере Системы Orphus. Кто не знает, это js приложения дающее возможность исправлять ошибки на сайте. Пользователь видит ошибку выделяет участок текста и жмёт Ctrl + Enter, после чего на email владельца сайта приходит уведомление. Просто и удобно, особенно для таких грамотеев как я ;)

Итак. Нам нужен модуль который будет выводить код в виде блока. Код - это вставка скрипта и картинки.

Проще этого разве hello world, который уже порядком поднадоел.

Создаём директорию для модуля в папке sites/all/modules/ вашего drupal 7. У меня папка называется orphus

Внутри создаём 2 файла:

orphus.info и orphus.module.

Первый - содержит имя, описание, зависимости, ну в общем всё что нужно друпалу, чтобы понять что это вообще такое.

Тут думать неочем вот его содержимое:

name = Orphus block
description = Добавляет блок для вставки системы Orphus
version = 1.0
core = 7.x

Второй же файл содержит реализацию плагина и сам код, который и добавит наш блок.

Для программного создания блока в друпал 7 нужно использовать 2 функции (так называемые хуки):

 hook_block_info() и hook_block_view()

Первая создаёт блок (его имя, описание и настройки), вторая - задаёт описание блока, ну и его вывод.

Итак файл orphus.module:

<?php
/**
 * Реализация hook_block_info()
 */
function orphus_block_info() {
  $blocks['orphus block'] = array( // имя блока - индекс массива
    'info' => t('My orphus block'), 
  );

  return $blocks;
}
 
/**
 * Реализация hook_block_view()
 */
function orphus_block_view($delta = '') {
  $block = array();

  switch ($delta) {
    case 'orphus block':
      $block['subject'] = t('orphus block');
      $block['content'] = "<a href=\"http://orphus.ru\" id=\"orphus\" target=\"_blank\"><img src=".drupal_get_path('module', 'orphus') . '/orphus.gif border="0" width="240" height="80"></a>';
     break;
  }
  return $block;
}
?> 

 Пояснений для кода думай делать и не надо. Ведь в ходе двух функций мы просто заполнили необходимыми данные массивы.

Обратите внимание, что если вы собираетесь сделать несколько блоков в одном модуле то, вызов switch во второй функции становиться не таким уж и не нужным ;) Просто добавляете следующий case и редактируйте действия...

Просмотров:   8559

Комментарии

вт, 09/02/2014 - 12:23
Денис

Хорошо расписано, долго не получалось создать простейший блок через модуль, а после этой статьи сразу всё получилось

Добавить комментарий

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и параграфы переносятся автоматически.
CAPTCHA
Введи эти символы. Ато роботы одолели!