Решил написать статейку о том как создаются блоки…
Я уже писал о том, как создать модуль для использования 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 и редактируйте действия…






