Создаём модуль 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=\"https://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 и редактируйте действия…

 

Похожий код:

Фото аватара
Алексей Петров

Программист, разработчик с 5 летним опытом работы. Учусь на разработчика игр на Unity и разработчика VR&AR реальности (виртуальной реальности). Основные языки программирования: C#, C++.

Оцените автора
Бла, бла код
Добавить комментарий