Система управления сайтом Drupal

Drupal (друпал) — система управления сайтом (CMS), написанная на языке PHP и использующая в качестве хранилища данных реляционную базу данных (поддерживаются MySQL, PostgreSQL и другие). Drupal является свободным программным обеспечением, защищённым лицензией GPL, и развивается усилиями энтузиастов со всего мира.

Технические особенности

Архитектура Drupal позволяет применять его для построения различных типов сайтов — от блогов и форумов до информационных архивов или сайтов новостей. Имеющийся по умолчанию функционал можно увеличивать подключением дополнительных расширений — «модулей» в терминологии Drupal.

Наиболее важные функции, предоставляемые Drupal «из коробки»:

  • единая категоризация всех видов содержимого (таксономия) — от форумных сообщений до блогов и новостных статей
  • широкий набор свойств при построении рубрикаторов: плоские списки, иерархии, иерархии с общими предками, синонимы, родственные категории
  • вложенность категорий любой глубины
  • поиск по содержимому сайта, в том числе поиск по таксономии и пользователям
  • разграничение доступа пользователей к документам (ролевая модель)
  • динамическое построение меню
  • поддержка XML-форматов
  • вывод документов в RDF/RSS
  • агрегация материалов с других сайтов
  • BlogAPI для публикации материалов с помощью внешних приложений
  • авторизация через OpenID
  • символьные осмысленные URL (иначе «человеко-понятные» — ЧПУ)
  • переводы интерфейса сайта на разные языки, а также поддержка ведения разноязычного контента
  • возможность создания сайтов с пересекающимся содержимым (например общей базой пользователей или общими настройками)
  • раздельные конфигурации сайта для различных виртуальных хостов (в том числе собственные наборы модулей и тем оформления для каждого подсайта)
  • механизм для ограничения нагрузки на сайт (автоматическое отключение при высокой посещаемости части информационных блоков и модулей)
  • уведомления о выходящих обновлениях модулей

Поддержка локализации

Система поддерживает локализацию интерфейса для различных языков. Drupal 5 имеет переводы интерфейса на 33 языка, а Drupal 6 - более чем на 70 языков (однако не все переводы являются полными). Имеется поддержка русского языка. В Drupal используется собственный механизм для локализации с хранением переводов в базе данных, наравне с остальным содержимым сайта. При этом несложной является адаптация к работе со стандартной библиотекой gettext. Импорт и экспорт переводов сайта также осуществляется в виде po-файлов (формат используемый библиотекой gettext).

Полная локализация содержимого поддерживается сторонними модулями, которые не входят в поставку Drupal, но могут быть скачаны с сайта разработчиков.

Для русского языка имеется свой собственный сервер локализации (см.Коллекцию ссылок), где вы можете скачать переводы ядра и различных модулей.

Методы структуризации содержимого

В Drupal предлагается гибкая схема организации структуры сайта на основе таксономии. Таксономия — механизм, позволяющий создавать произвольное количество тематических категорий для содержимого сайта и ассоциировать их с модулями, обеспечивающими ввод и вывод информации. Категории могут представлять плоские или иерархические списки, либо сложные структуры, где элемент может иметь несколько «родителей» и несколько дочерних элементов. С помощью подобной схемы одними и теми же модулями возможна организация различных вариантов структуризации содержимого. Например, легко создаётся сквозной список «ключевых слов» для всех документов сайта и т. п.

Другая парадигма появилась с созданием в Drupal расширения Content Construction Kit (CCK). CCK позволяет дополнять документы новыми полями различных типов — от полей ввода URL и email, до полей хранения и отображения мультимедийных файлов. Также посредством дополнительных модулей к CCK (например Node reference) можно организовать связи между документами, не используя механизм таксономии.

Механизмы расширения функционала

Drupal имеет модульную архитектуру с компактным ядром, предоставляющим API, к которому могут обращаться модули. Стандартный набор модулей включает такие функции, как новостная лента, блог, форум, загрузка файлов, сборщик новостей, голосования, поиск и другие. Дизайн сайта меняется также посредством специальных модулей — «тем оформления».

Модули

Несколько примеров модулей, которые можно скачать в репозитории на drupal.org:

  • Ad — система для управления показом рекламных баннеров
  • Captcha — защитный механизм картинок «CAPTCHA», используемый при регистрации
  • Ecommerce, Ubercart — системы электронной коммерции
  • FCKeditor, CKEditor, Tinymce — визуальные редакторы для ввода контента
  • Gallery — интеграция с галереей изображений Gallery2
  • LDAP integration — интеграция с LDAP
  • mailhandler, listhandler — возможность публикации материалов сайта через почтовый интерфейс и из почтовых рассылок
  • Project — ведение проектов, включающее багтрекер и интеграцию с CVS и Subversion
  • SPAM — блокировка спама
  • Swish, Sphinxsearch — интеграция с поисковыми системами Swish и Sphinx

К несомненным достоинствам Drupal следует отнести весьма полную документацию по различным аспектам системы (преимущественно документация на английском языке).

Темы оформления

Дизайн сайта на Drupal строится на основе сменных тем оформления. Как таковой нет единственной схемы построения дизайна. Взамен Drupal даёт возможность использовать различные «движки тем», использующие шаблоны, удобные для редактирования (шаблоны XML в движках xtemplate и Smarty или шаблоны на HTML и встроенный PHP в движке phptemplate и т. п.), либо создавать темы оформления напрямую обращающиеся к API Drupal. В комплект поставки Drupal включён движок тем на основе phptemplate и несколько примеров тем. Другие движки тем можно скачать на сайте проекта.

Начиная с версии 4.7 Drupal поддерживает технологию Ajax для динамической подгрузки содержимого без полного обновления страниц. В версии 5 для работы с JavaScript добавлена библиотека JQuery. C версии 6.0 появилось создание форм посредством AHAH (без полной перезагрузки страниц сайта).

Системные требования

Drupal в первую очередь ориентирован на платформу LAMP, но возможны варианты использования другого системного ПО. В частности, на нашем хостинге успешно работают сотни сайтов на друпале, хотя наша платформа отличается, хотя и в одной только букве: BAMP (BSD вместо Linux).

  • Операционная система: семейство Unix (в том числе FreeBSD, Mac OS X), Windows (любые ОС, на которых может работать интерпретатор PHP)
  • Веб-сервер: Apache, Nginx, Lighttpd, IIS Versions 6, 7 (через Fast CGI) (теоретически любой веб-сервер, допускающий исполнение PHP-кода)
  • СУБД: MySQL, PostgreSQL (в принципе несложна адаптация к другим реляционным СУБД, например IBM DB2)
  • PHP версии 4.3.3 и выше (для совместимости со всеми сторонними модулями рекомендуется применять PHP 5, вместо PHP 4)