Часть 1. Большая книга рецептов Битрикс - инфоблоки запеченные под майонезом
Зачем я везде расписывался?! Сжечь! Сжечь!
Бургомистр, "Убить Дракона"
Введение
Эта статья предназначена для тех разработчиков сайтов, кто уже работает с системой «Битрикс :: Управление сайтом» (в дальнейшем, БУС). Огромный набор функциональных возможностей системы зачастую покрывает 95% всех задач, которые возникают у заказчика обычного корпоративного сайта. Эти вопросы решаются написанием специфических шаблонов для инфоблоков, меню или строки навигации и, в целом, не требуют серьезного программирования на PHP. Оставшиеся 5% задач состоят из задач автоматизации той или иной деятельности, которую заказчик хочет видеть на своем сайте. Очевидно, что компании, имеющие в штате PHP-программистов, так или иначе, справляются с задачей, однако само наличие БУС создает у разработчиков естественное желание написать автоматизацию «интегрированном с Битрикс виде». Под интеграцией в таких случаях, как правило, понимается требование, чтобы «самописная» часть «смотрелась» частью общей системы, не мешала получению автоматических обновлений через SiteUpdate, настраивалась через раздел Администрирования и так далее. Иными словами, хочется, чтобы «доработки» были сделаны в виде полноценного модуля БУС.
В нашей статье мы покажем, каким образом описывать модуль, чтобы система работала с ним, как с «родным». Расскажем, как разработать класс модуля и управлять опциями при помощи функций ядра системы. Поясним, как правильно располагать файлы с текстовыми константами, описывать компоненты для визуального HTML-редактора страницы и генерировать почтовые нотификации на определенные события.
Что мы будем делать?
Прежде, чем приступить к особенностям реализации модуля, надо решить, а что мы, собственно, хотим получить в результате. В качестве примера приближенного к реальности мы решили попробовать создать простую гостевую книгу. Она должна быть доступна в виде компонентов в HTML-редакторе, позволять регулировать права доступа к записям книги при помощи специальных ролей (как это сделано в модуле Поддержка, например) и генерировать почтовые нотификации на такое основное событие как создание записи в гостевой книге. Данная задача является простой, но в тоже время позволит нам затронуть практически все вопросы создания собственного модуля в БУС.
Долой SQL, даешь ООП!
Если бы мы решили делать гостевую книгу с нуля, то очевидным решением было бы создание пары таблиц, которые позволили бы описать связи между некими сущностями «Гостевая книга» и «Запись в гостевую книгу». Мы бы вооружились MySQL (или Oracle, раз уж БУС нам это позволяет) и начали описывать таблицы, придумывать запросы и делать все то, чем обычно занимаются разработчики сайтов «на коленках». Но мы-то уже не они, не правда ли? У нас уже есть прекрасная основа для моделирования очень широкого спектра данных, с которыми потом будет работать сайт. Чудо называется - «Информационные блоки», и этот модуль, как мы знаем, доступен даже в самой минимальной конфигурации БУС: редакции Старт. Давайте воспользуемся этим прекрасным механизмом, тем более что для него существует масса готового кода в разделе «Администрирование», который мы сможем позаимствовать для своих целей. Помимо всего прочего, мы сможем работать на уровне Битрикс API, что уже само по себе приятно.