Drupal
Drupal (от голл. druppel — капля) — система управления сайтом, написанная на языке PHP и использующая в качестве хранилища содержания реляционную базу данных (поддерживаются MySQL, PostgreSQL, а также любые СУБД поддерживаемые библиотекой PEAR). Drupal является свободным программным обеспечением защищённым лицензией GPL и создаётся усилиями энтузиастов со всего мира. Начал разработку голландец Dries Buytaert, который и поныне является руководителем проекта.
Архитектура Drupal позволяет применять его для построения различных типов сайтов — от блогов и форумов, до информационных архивов или сайтов новостей. Функциональность обеспечивается подключаемыми модулями, обращающимися к общему API Drupal. Стандартный набор модулей включает, например, такие функции как новостная лента, блог, форум, загрузка файлов, сборщик новостей, голосования, поиск и др. Большое количество дополнительных модулей, значительно расширяющих базовые функции можно скачать с официального сайта.
- единая категоризации всех видов содержимого - от форумных сообщений до блогов и новостных статей
- вложенность категорий любой глубины
- поиск по содержимому сайта
- разграничение доступа пользователей к документам (ролевая модель)
- динамическое построение меню
- поддержка XML-форматов:
- вывод документов в RDF/RSS
- аггрегация материалов с других сайтов
- BlogAPI для публикации материалов с помощью внешних приложений
- поддержка общей авторизации между сайтами на Drupal ("сайты-партнёры")
- короткие URL
- поддержка сменных тем оформления сайта с предоставлением нескольких готовых вариантов
- поддержка переводов интерфейса сайта на разные языки
- возможность создания сайтов с пересекающимся содержимым (например общей базой пользователей или общими настройками)
- раздельные конфигурации сайта для различных виртуальных хостов (в том числе собственные наборы модулей и тем оформления для каждого подсайта)
- механизм для ограничения нагрузки на сайт (автоматическое отключение при высокой посещаемости части информационных блоков и модулей)
Поддержка локализации
Полная локализация содержимого поддерживается сторонними модулями (не входят в поставку Drupal, но могут быть скачаны с сайта разработчиков).
Методы структуризации содержимого
В Drupal предлагается гибкая схема организации структуры сайта на основе таксономии. Таксономия — механизм, позволяющий создавать произвольное количество тематических категорий для содержимого сайта и ассоциировать их с модулями, обеспечивающими ввод и вывод информации. Категории могут представлять плоские или иерархические списки, либо сложные структуры, где элемент может иметь несколько «родителей» и несколько дочерних элементов. С помощью подобной схемы одними и теми же модулями возможна организация различных вариантов структуризации содержимого. Например, легко создаётся сквозной список «ключевых слов» для всех документов сайта и т. п.
Дизайн сайта на Drupal строится на основе сменных тем оформления. Как таковой нет единственной схемы построения дизайна, взамен Drupal даёт возможность использовать различные «движки» тем, использующие шаблоны удобные для редактирования (шаблоны XML в движках xtemplate и Smarty или шаблоны на HTML+встроенный PHP в движке phptemplate и т. п.), либо создавать темы оформления напрямую обращающиеся к API Drupal.
Начиная с версии 4.7 Drupal поддерживает технологию Ajax, для динамической подгрузки содержимого без полного обновления страниц.
Примеры модулей
Дополнительные модули размещённые в репозитории на drupal.org позволяют значительно расширить функциональность системы. Несколько примеров (приведены модули для версии Drupal 5.x, не всегда модули доступны для всех версий системы):
- Banner - баннерная система
- BBCode - поддержка форматирования BBCode для содержимого сайта
- Breadcrumbs - вывод иерархии страниц ("хлебных крошек")
- Captcha - защитный механизм картинок "captcha" используемый при регистрации
- CCK – создание новых типов контента или добавление новых полей к уже существующим
- Clean URLs – «чистые ссылки» (без ?=& и т.д.)
- Collapsible Text, Collapsiblock - возможность создания блоков и секций сворачивающегося текста
- DHTML Menu – меню с использованием JavaScript
- Ecommerce - электронный магазин
- External Links – подсветка почтовых и внешних ссылок
- Fckeditor - графический редактор для ввода контента
- Fivestar, JRating – возможность оценки материала
- Gallery - интеграция с галереей изображений Gallery2
- Image – возможность объединения изображений в галереи, контроль их параметров, преобразование изображений и т.д.
- IMCE - модуль для работы с файлами
- Listhandler - интеграция с почтовыми рассылками
- Locale - возможность перевода интерфейса на множество языков
- Meta Tags – управление метаданными сайта и отдельных страниц
- Mollom, Akismet – эффективный антиспам для сайта
- OpenID - возможность авторизации по OpenID
- Pathauto – автоматическое формирование URL из заголовка
- Project - багтрекер
- SPAM - блокировка спама на основе алгоритма Байеса
- Tagadelic - создание облаков тегов
- Taxonomy – таксономия (категоризация содержимого с помощью словарей и терминов)
- Thickbox, Lightbox, Shadowbox – предпросмотр картинок без перезагрузки страниц
- TinyMCE – HTML-редактор
- Token – сервис по использованию лексем для других модулей
- Upgrade Status - отслеживание доступных обновлений
- Views – гибкий метод отображения и сортировки информации
- XML Sitemap - создание удобной для поисковиков карты сайта
...и многие-многие другие. Полный список модулей - на drupal.org.
К несомненным достоинствам Drupal следует отнести весьма полную документацию по различным аспектам системы (однако только на английском языке). Над переводом документации на русский работают сообщества Drupal.ru и Drupaler.ru.
Недостатки
Критики Drupal ставят в упрёк разработчикам слабое использование объектных возможностей PHP. Действительно, API Drupal практически не использует имеющихся в PHP возможостей ООП. Разработчики аргументируют это слабой реализацией ООП в языке (особенно до версии PHP 5). Объектная модель в Drupal присутствует, но в несколько нетрадиционном для PHP виде. См. мотивации выбора архитектуры системы в статье Программирование в Drupal с точки зрения ООП.
Ввиду активного использования базы данных Drupal может быть слишком тяжёл для ресурсов, предоставляемых на дешёвых тарифных планах хостинг-провайдеров, хотя для небольших сайтов с посещаемостью в несколько сотен или тысяч посетителей в сутки этих ресурсов будет достаточно.
Здесь многое зависит от грамотных настроек. Лучше выбирать хостинги, специально настроенные под Drupal: nginx 0.6.31 + php5-fcgi, например.
Вот список посещаемых сайтов на Drupal:
- AOL — корпоративный сайт,
- Apple — выставка и конференция Macworld,
- Avril Lavigne - персональный сайт певицы,
- Mozilla — Get Firefox,
- Forbes — Office Pranks,
- Fox Pictures - сайт новинок кино,
- Greenpeace UK — официальный сайт,
- Hillary Clinton — предвыборный сайт,
- MTV UK — официальный сайт,
- NASA - корпоративный сайт,
- Novell — community-сайты,
- Ozzy Osbourne - персональный сайт исполнителя,
- Second Life — сайт разработчиков,
- Sony — музыкальный портал и сайты исполнителей,
- Sun — сайт с расширениями для Open Office,
- The Onion - популярный в США журнал,
- Ubuntu — официальный сайт,
- US Magazine - популярный в США журнал,
- Warner Bros Records — музыкальный сайт,
- Yahoo — Yahoo! Research,
- ООН — сайт кампании по борьбе с бедностью.
Авторы описания: Александр Графов, Александр Тихонов