Drupal (Друпал) – основа управления содержимым (CMF), написанная на языке PHP и использующая в качестве хранилища данных реляционную базу данных (поддерживаются MySQL, PostgreSQL и другие). Drupal является свободным программным обеспечением, защищённым лицензией GNU General Public License, и развивается усилиями энтузиастов со всего мира.
Drupal может работать в таких популярных системах как Microsoft Windows, Mac OS X, Linux, собственно, на любой платформе, которая поддерживает работу веб-сервера Apache HTTP Server, nginx, lighttpd или Microsoft IIS; также требуется наличие системы управления базами данных MySQL/MariaDB, PostgreSQL 8.3, SQLite или другие коммерческие. Полные системные требования Drupal приведены на официальном сайте.
Система поддерживает локализацию интерфейса на более чем 100 языкаx (однако не все переводы являются полными). Имеется поддержка русского языка. В Drupal используется собственный механизм для локализации с хранением переводов в базе данных, наравне с остальным содержимым сайта. При этом несложной является адаптация к работе со стандартной библиотекой GNU gettext. Импорт и экспорт переводов сайта осуществляется в виде po-файлов (формат используемый библиотекой GNU gettext).
Полная локализация содержимого поддерживается сторонними модулями, которые не входят в поставку Drupal, но могут быть скачаны с сайта разработчиков.
В Drupal предлагается гибкая схема организации структуры сайта на основе таксономии. Таксономия – механизм, позволяющий создавать произвольное количество тематических категорий для содержимого сайта и ассоциировать их с модулями, обеспечивающими ввод и вывод информации. Категории могут представлять плоские или иерархические списки, либо сложные структуры, где элемент может иметь несколько “родителей” и несколько дочерних элементов. С помощью подобной схемы одними и теми же модулями возможна организация различных вариантов структуризации содержимого. Например, легко создаётся сквозной список “ключевых слов” для всех документов сайта и т. п..
Другая парадигма появилась с созданием в Drupal расширения Content Construction Kit (CCK). CCK позволяет дополнять документы новыми полями различных типов – от полей ввода URL и Email, до полей хранения и отображения мультимедийных файлов. Также посредством дополнительных модулей к CCK (например Node reference) можно организовать связи между документами, не используя механизм таксономии.
Drupal имеет модульную архитектуру с компактным ядром, предоставляющим API, к которому могут обращаться модули. Стандартный набор модулей включает такие функции, как новостная лента, блог, форум, загрузка файлов, сборщик новостей, голосования, поиск и другие. Дизайн сайта меняется также посредством специальных модулей – “тем оформления”.
Модули Drupal
Несколько примеров наиболее популярных модулей, которые можно скачать в репозитории на drupal.org:
К несомненным достоинствам Drupal следует отнести весьма полную документацию по различным аспектам системы (документация преимущественно на английском языке).
Технические особенности Drupal
Архитектура Drupal позволяет применять его для построения различных типов сайтов – от блогов и новостных сайтов до информационных архивов или социальных сетей. Имеющуюся по умолчанию функциональность можно увеличивать подключением дополнительных расширений – “модулей” в терминологии Drupal. Наиболее важные функции, предоставляемые Drupal “из коробки”:
Вывод документов в RDF/RSS.
Агрегация материалов с других сайтов.
BlogAPI для публикации материалов с помощью внешних приложений.
Дизайн сайта на Drupal можно менять с помощью тем оформлений. В качестве шаблонизатора (“движок темы” в терминологии Drupal) используется PHPTemplate, однако есть возможность использовать Xtemplate, Smarty, Twig и другие.
Начиная с версии 4.7 Drupal поддерживает технологию AJAX для динамической подгрузки содержимого без полного обновления страниц. В версии 5 для работы с JavaScript добавлена библиотека jQuery. C версии 6.0 появилась возможность динамически изменять формы посредством AHAH. В версию 7.0 вошла библиотека jQuery UI.
Награды Drupal
Основным соперником Drupal была Joomla!. Победители выбирались жюри из экспертов в своей области, а также посетителями сайта Packt.
Недостатки Drupal
Действительно, API Drupal практически не использует имеющиеся в PHP возможности ООП. Разработчики аргументируют это слабой реализацией ООП в языке (особенно до версии PHP 5). Объектная модель в Drupal присутствует, но в несколько нетрадиционном для PHP виде. В Drupal 7 однако присутствует ряд нововведений задействующих объектные возможности PHP 5.
В каждом новом большом релизе происходят большие изменения API, когда наряду с добавлением новых функций убираются некоторые старые или изменяются параметры вызова существующих. Это приводит к необходимости разработчикам сторонних модулей адаптировать их для работы с новыми версиями Drupal. Однако изменения API и процедура адаптации модулей к новым версиям описываются в документации для каждого релиза, также всегда предлагается механизм автоматизированного апгрейда ядра системы на новую версию. Плюс данной схемы разработки – нет необходимости тянуть из версии в версию программный слой совместимости со старыми API, что облегчает текущий код системы.
Ссылки