Drupal
Материал из BeneWiKi.
| Drupal | |
![]() | |
| Тип | Система управления контентом/CMF |
| Разработчик | Дрис Байтаерт (Dries Buytaert) и сообщество разработчиков |
| ОС | Кроссплатформенное программное обеспечение |
| Текущая версия | 5.6 — 10 января 2008 г. |
| Лицензия | GNU GPL |
| Сайт | drupal.org |
Содержание |
Общее описание Drupal
Drupal (друпал) — система управления содержанием сайта (CMS), написанная на языке PHP и использующая в качестве хранилища данных реляционную базу данных (поддерживаются MySQL, PostgreSQL и другие).
Drupal является свободным программным обеспечением защищённым лицензией GPL и улучшается усилиями энтузиастов со всего мира.
Drupal позволяет одному человеку или сообществу пользователей легко создавать, публиковать и управлять разнообразными по содержанию сайтами. Десятки тысяч людей и организаций используют Drupal для эффективного управления своими сайтами, включая:
- порталы сообществ
- форумы
- корпоративные сайты
- внутрисетевые сайты
- персональные сайты
- сайты поклонников (фанатов)
- блоги
- магазины
- справочники
- социальные сети
Drupal готов к работе сразу после загрузки. С пятой версии он имеет лёгкий в применении инсталлятор. Встроенная функциональность в сочетании с множеством свободно доступных дополнительных модулей позволят вам организовать:
- среду совместной работы
- системы управления содержанием
- блоги
- форумы
- распределённые сети
- информационные бюллетени
- трансляции (podcasts)
- фотогалереи
- файловые хранилища
и многое другое.
Drupal — это открытое программное обеспечение распространяемое под лицензией GPL, которое поддерживается и разрабатывается сообществом тысяч пользователей и разработчиков. Drupal свободно доступен для загрузки и использования. Если вам нравится то, что Drupal делает для вас, пожалуйста сотрудничайте с сообществом, чтобы расширить и улучшить Drupal в соответствии с вашими потребностями.
История проекта
Начал разработку в 2000 году голландец Дрис Байтаерт (Dries Buytaert), который и поныне является руководителем проекта. Название drupal является искажённым произношением голландского слова druppel (капля) и появилось в результате забавной ошибки. В 2000 году несколько студентов антверпенского университета использовали общий ADSL-модем для доступа в интернет и для общения пользователей этой маленькой локальной сети Дрис создал внутренний сайт. Программа на которой работал сайт не имела имени, пока Дрис не собрался регистрировать доменное имя для нового сайта и в результате опечатки вместо dorp.org (от голландского dorp — деревня, вполне уместное имя для небольшого сообщества) был зарегистрирован drop.org (drop на английском — капля). Аудитория нового сайта со временем сменилась на интересующихся развитием новых веб-технологий и новый сайт постепенно перешёл из любительского эксперимента в проект по обсуждениям идей веб-программирования. В 2001 году Дрис опубликовал исходные коды drop.org под именем «Drupal», с тех пор разработка переместилась на зарегистрированный позднее сайт drupal.org, который приобрёл статус официального сайта проекта[1].
Со времени создания в процесс разработки были вовлечены сотни людей. Официальные разработчики ядра сейчас — это десятки человек, но много людей присылают свои патчи, включаемые в код системы, также функциональность движка расширяется дополнительными модулями, которые создают сторонние разработчики. Например в релизе 4.6 приняли участие 50 человек, приславших 338 поправок к коду, а в релизе 4.7 приняли участие уже 338 разработчиков приславших примерно 1500 поправок. За пять лет существования проекта (к 2006 году) вышло 13 релизов, было разработано более 300 дополнительных модулей, расширяющих базовые функции Drupal и по примерной статистике сайт использовали более 55 тыс. сайтов в Интернете.
Со временем вокруг международного сайта появились национальные сообщества. Первым национальным доменом стал в 2003 году drupal.ru — сообщество пользователей и разработчиков, говорящих на русском языке. Сейчас работают более 20 национальных сайтов поддержки на разных языках. Полный список национальных сообществ можно найти на странице Сообществ Drupal.
Логотип
После того, как Друпал был создан, очевидным вопросом был выбор и создание логотипа. Участники сообщества считали, что он должен быть связан с каплей или водой. И первоначально логотип Друпала изображался как капля в круге. Со временем пришла идея сделать логотип в виде карикатурной капли с лицом. Стивен Виттенс (Steven Wittens) создал трёхмерную каплю, но идея не пошла в массы главным образом потому, что трёхмерный объект трудно печатать, редактировать и т. д.
Текущий логотип Друпала придуман Кристианом Дженсеном (Kristjan Jansen). Он представляет из себя каплю изображающую лицо. Глаза показываются как две соединённые капли в виде знака бесконечности и выражают в символической форме бесконечные возможности Друпала. Дополняют лицо полукруглый нос и озорная улыбка.
У логотипа есть своё имя — Друпликон (Druplicon).
Технические особенности
Архитектура Drupal позволяет применять его для построения различных типов сайтов — от блогов и форумов, до информационных архивов или сайтов новостей. Функциональность обеспечивается подключаемыми модулями, обращающимися к общему API Drupal. Стандартный набор модулей включает, например, такие функции как новостная лента, блог, форум, загрузка файлов, сборщик новостей, голосования, поиск и др. Большое количество дополнительных модулей, значительно расширяющих базовые функции можно скачать с официального сайта.
Наиболее важные функции предоставляемые модулями входящими в поставку Drupal:
- единая категоризация всех видов содержимого — от форумных сообщений до блогов и новостных статей
- вложенность категорий любой глубины
- поиск по содержимому сайта
- разграничение доступа пользователей к документам (ролевая модель)
- динамическое построение меню
- поддержка XML-форматов:
- поддержка общей авторизации между сайтами на Drupal («сайты-партнёры»)
- короткие URL (ЧПУ)
- поддержка сменных тем оформления сайта с предоставлением нескольких готовых вариантов
- поддержка переводов интерфейса сайта на разные языки
- возможность создания сайтов с пересекающимся содержимым (например общей базой пользователей или общими настройками)
- раздельные конфигурации сайта для различных виртуальных хостов (в том числе собственные наборы модулей и тем оформления для каждого подсайта)
- механизм для ограничения нагрузки на сайт (автоматическое отключение при высокой посещаемости части информационных блоков и модулей)
Поддержка локализации
Система поддерживает локализацию интерфейса для различных языков. Drupal 5 имеет переводы интерфейса на 33 языка (однако не все переводы являются полными). Имеется поддержка русского языка. В Drupal используется собственный механизм для локализации с хранением переводов в базе данных, наравне с остальным содержимым сайта. При этом несложной является адаптация к работе со стандартной библиотекой gettext. Импорт и экспорт переводов сайта также осуществляется в виде po-файлов (формат используемый библиотекой gettext).
Полная локализация содержимого поддерживается сторонними модулями (не входят в поставку Drupal, но могут быть скачаны с сайта разработчиков).
В Drupal 6 планируется обновление механизма локализации, для полноценной работы с многоязычным содержимым. Также планируется адаптация к формату XLIFF для хранения переводов (совместимость с gettext сохранится).
Методы структуризации содержимого
В Drupal предлагается гибкая схема организации структуры сайта на основе таксономии. Таксономия — механизм, позволяющий создавать произвольное количество тематических категорий для содержимого сайта и ассоциировать их с модулями, обеспечивающими ввод и вывод информации. Категории могут представлять плоские или иерархические списки, либо сложные структуры, где элемент может иметь несколько «родителей» и несколько дочерних элементов. С помощью подобной схемы одними и теми же модулями возможна организация различных вариантов структуризации содержимого. Например, легко создаётся сквозной список «ключевых слов» для всех документов сайта и т. п.
Дизайн сайта на Drupal строится на основе сменных тем оформления. Как таковой нет единственной схемы построения дизайна, взамен Drupal даёт возможность использовать различные «движки» тем, использующие шаблоны удобные для редактирования (шаблоны XML в движках xtemplate и Smarty или шаблоны на HTML+встроенный PHP в движке phptemplate и т. п.), либо создавать темы оформления напрямую обращающиеся к API Drupal.
Начиная с версии 4.7 Drupal поддерживает технологию Ajax, для динамической подгрузки содержимого без полного обновления страниц. В версии 5 для работы с JavaScript добавлена библиотека JQuery.
Примеры модулей
Дополнительные модули размещённые в репозитории на drupal.org позволяют значительно расширить функциональность системы. Несколько примеров (приведены модули для версии Drupal 4.6, не всегда модули доступны для всех версий системы):
- Banner — баннерная система
- BBCode — поддержка форматирования BBCode для содержимого сайта
- Captcha — защитный механизм картинок «captcha» используемый при регистрации
- Ecommerce — электронный магазин
- Fckeditor — визуальный редактор для ввода контента
- Gallery — интеграция с галереей изображений Gallery2
- LDAP integration — интеграция с LDAP
- listhandler — интеграция с почтовыми рассылками
- Project — багтрекер
- SPAM — блокировка спама на основе алгоритма Байеса
- Swish — интеграция с системой поиска Swish
- Textile — поддержка разметки Textile для содержимого сайта
- Полный список модулей на drupal.org
К несомненным достоинствам Drupal следует отнести весьма полную документацию по различным аспектам системы (однако только на английском языке).
Системные требования
Drupal в первую очередь ориентирован на платформу LAMP, но возможны варианты использования другого системного ПО.
- Операционная система: семейство Unix (в том числе FreeBSD, Mac OS X), Windows (любые ОС, на которых может работать интерпретатор PHP)
- Веб-сервер: Apache, Lighttpd (теоретически любой веб-сервер, допускающий исполнение PHP-кода)
- СУБД: MySQL, PostgreSQL (в принципе несложна адаптация к другим реляционным СУБД, например IBM DB2 [2])
- PHP версии 4.3.3 и выше
Недостатки
- Критики Drupal ставят в упрёк разработчикам слабое использование объектных возможностей PHP. Действительно, API Drupal практически не использует имеющихся в PHP возможностей ООП. Разработчики аргументируют это слабой реализацией ООП в языке (особенно до версии PHP 5). Объектная модель в Drupal присутствует, но в несколько нетрадиционном для PHP виде[3].
- Ввиду активного использования базы данных Drupal может быть слишком тяжёл для ресурсов предоставляемых на дешёвых тарифных планах хостинг-провайдеров, хотя для небольших сайтов с посещаемостью в несколько сотен или тысяч посетителей в сутки этих ресурсов будет достаточно.
- В некоторых случаях, особенно при большой посещаемости, использование встроенного механизма кэширования (основанного на использовании БД) может привести к повреждению таблиц в БД[4]
- К недостаткам (но одновременно и к достоинствам) Drupal можно отнести достаточно высокую динамику разработки проекта. Практически в каждом релизе происходят изменения API, когда наряду с добавлением новых функций убираются некоторые старые или изменяются параметры вызова функций. Это приводит к необходимости разработчикам сторонних модулей адаптировать их для работы с новыми версиями Drupal. Однако изменения API и процедура адаптации модулей к новым версиям описываются в документации для каждого релиза, также всегда предлагается механизм автоматизированного апгрейда ядра системы на новую версию.
- Сложная для понимания неподготовленными пользователями система классификации содержимого — таксономия.
Терминология Drupal
Тексты и ссылки на доступное содержание хранятся в базе данных Drupal, динамически извлекаются, формируются и отправляются пользователю в ответ на запрос браузера.
Все содержание сайта на Drupal хранится в виде т.н. материалов (node, букв. - "узел", т.е. относительно самостоятельный информационный фрагмент, смысловой блок, документ). Материалами могут быть новости, записи в блогах и форумах, опросы, изображения, аудио- и видеозаписи и т.п. Пользователи могут добавлять комментарии к материалам, но в Drupal комментарии сами по себе не являются материалами. В зависимости от настроек сайта, добавление новых материалов и (или) комментариев может быть разрешено или запрещено. Кроме того, материалы или комментарии перед публикацией могут отправляться на одобрение модератору.
В Drupal темой оформления по умолчанию является Garland. Она состоит из трёх колонок. Центральная колонка называется колонкой содержания. Левая и правая колонки называются боковыми панелями. Обычно в них размещают блоки меню, также в них обычно помещают наиболее комментируемые статьи и (или) самые популярные статьи. После установки Drupal в левой панели показывается блок входа на сайт и блок навигации, содержащий меню. Пункты меню в блоке навигации могут показываться в зависимости от прав доступа для вас (посетителя).
Блоки тоже могут показываться в зависимости от доступности тех или иных действий. Например, если вы вошли на сайт, блок входа показываться не будет.
Материалы могут быть прикреплены к терминам, такую организацию называют таксономией. Форумы, в отличие от других типов материалов, всегда должны быть прикреплены к какому-либо термину. Термины могут быть иерархическими и содержать неограниченное количество подтерминов.
Новые возможности в Drupal часто реализуются через модули. Модули могут определять новые типы материалов, новые пункты меню, новые типы блоков и т.д.
Определения
Block — блок
Блоки используются для показа навигации или содержания. По умолчанию, в теме Garland блоки можно расположить в пяти регионах страницы, но можно самостоятельно определить любое местоположение блока. Блоки — не материалы, они — только способ позиционирования данных на странице.
Theme Engine — механизм темы, движок темы
Механизм темы оформления — это набор скриптов, которые интерпретируют код и помогают сделать оформление вашего сайта более простой задачей. Для Drupal начиная с версии 4.7 используется механизм темы оформления phpTemplate.
Filter— фильтр
Фильтры используются для управления выводом содержания на страницу. Они могут удалять нежелательный контент (например, "опасные" теги HTML), форматировать его (например, добавлять перевод строки после абзаца или задавать оформление гиперссылок) и т.п.
Module — модуль
Модули используются для расширения функциональных возможностей Drupal. Стандартными модулями называются те, которые включены в установочный пакет, а дополнительными те, которые необходимо скачивать отдельно.
Node — материал
Drupal хранит всё содержание в виде материалов. Для выполнения разных задач существуют разные типы материалов (новости, записи в блогах и форумах, опросы, изображения, аудио- и видеозаписи и т.п.).
Permissions — права
Права управляют доступом к созданию содержания, изменению и удалению. Администратор сайта назначает пользовательским ролям определенные права доступа, а пользователи получают заданные роли. Первому пользователю Drupal присваивается UID=1 (User ID) и он автоматически получает все права. Посетитель (гость, аноним) всегда имеет UID=0 и имеет роль anonymous user.
Roles — роли
Роль — это набор прав. Две роли в Drupal являются установленными по умолчанию: authenticated user — пользователь, посетитель прошедший идентификацию (т.е. тот, который ввел свой логин, пароль и вошел в свой аккаунт) и anonymous users — посетитель сайта, который не имеет своего аккаунта или не входил в него. Этим ролям можно изменить права, но их нельзя удалить или переименовать.
Style — стиль
CSS-файл (или файлы) заменяющий CSS-файл темы оформления, используемой по умолчанию.
Taxonomy — таксономия
Drupal использует таксономию для классификации и организации содержания. Что значит слово таксономия можно посмотреть в словарях.
- Term — термин — ключевое слово к которому привязывается документ. Термины могут образовывать иерархию и содержать подтермины.
- Vocabulary — словарь — набор терминов. Словари также могут быть иерархическими.
- Taxonomy — таксономия — общее название системы и модуля её формирующего.
Синонимами слова термин являются слова тег или категория. Если слово "тег" в терминологии Drupal не используется, то слово "категория" стали использовать вместо слова "термин" начиная с пятой версии. Вместо слова "словарь", начиная с пятой версии используется слово "группа".
Theme — тема оформления, шаблон, макет
Набор файлов (php, theme, css, jpg, gif, png), которые определяют оформление сайта.
См. также
- Официальный сайт Drupal
- Различные инструкции по установке, настройке, использованию и т.д.
- Интервью о Drupal на habrahabr.ru
- Вот здесь есть довольно интересное сравнение CMS, проведённое разработчиками IBM ibm.com
- Выбор Open Source CMS для разработки и внедрения web-сайта, часть 1(18.11.2007)(статья на union-d.ru)
- Документация на drupal.ru
Ссылки
Со временем вокруг международного сайта появились национальные сообщества. Первым национальным доменом стал в 2003 году drupal.ru — сообщество пользователей и разработчиков говорящих на русском языке. Сейчас работают более 20 национальных сайтов поддержки на разных языках. Полный список национальных сообществ можно найти на странице www.drupal.org/community.
- Официальный сайт проекта Drupal
- Использованы также материалы с сайта drupal.org в переводе setegnom.com.
Национальные сообщества и региональные представительства:
Другие источники:
- Самоучитель по CMF Drupal {ru}
- Документация (вики) {ru}
- Описание API и примеры кода {en}
- Темы для сайтов на Drupal
- Демонстрационные сайты: сайт #1
- Drupal 6 русскоязычный сайт
Примеры реализации сайтов на Drupal
Приведены примеры нескольких сайтов с высокой посещаемостью (десятки тыс. посетителей в сутки и выше), работающие на Drupal. Даные о посещаемости приблизительны и основаны на статистике сервиса alexa.com.
- www.theonion.com
- www.ubuntu.com
- www.popsugar.com
- www.evolt.org
- usmagazine.com
- www.spreadfirefox.com
- www.psu.com
Литература
В настоящее время нет книг на русском языке по этой CMS, есть книги на английском и немецком языках. Полный список вышедших книг можно найти на странице drupal.org/node/42200.
- Robert T. Douglass, Mike Little, Jared W. Smith «Building Online Communities with Drupal, phpBB, and WordPress». Apress, ISBN 1-59059-562-9
- David Mercer «Drupal: Creating Blogs, Forums, Portals, and Community Websites», ISBN 1-904811-80-9
- John K. VanDyk, Matt Westgate «Pro Drupal Development», ISBN 139781590597552, ISBN 101590597559


