Drupal

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
Drupal
Логотип программы Drupal
Тип система управления содержимым
Автор Дрис Бёйтарт
Разработчик Дрис Бёйтарт и Drupal Association[d]
Написана на PHP, с использованием Symfony
Операционная система Linux, Microsoft Windows, macOS и UNIX
Первый выпуск 15 января 2001
Последняя версия

10.1.4[1][2], также 10.0.11[3][4],

9.5.11[5][6], 7.98[7][8] (20 сентября 2023; 1 день назад (2023-09-20))
Репозиторий Drupal Repository
Лицензия GNU GPL 2+[d][9][10]
Сайт drupal.org (англ.)
Логотип Викисклада Медиафайлы на Викискладе

Drupal (Дру́пал) — система управления содержимым (CMS), используемая также как каркас для веб-приложений (CMF), написанная на языке PHP и использующая в качестве хранилища данных реляционную базу данных (поддерживаются MySQL, PostgreSQL и другие[11]). Drupal является свободным программным обеспечением, защищённым лицензией GPL, и развивается усилиями энтузиастов со всего мира. Drupal предоствляет серверный фреймворк с открытым исходным кодом как минимум для 14% из 10 000 лучших веб-сайтов по всему миру[12] и для 1,2% из 10 миллионов лучших веб-сайтов[13] — от личных блогов до корпоративных, политических и правительственных сайтов.[14] Также Drupal используется для управления знаниями и делового сотрудничества.[15]

История проекта[править | править код]

Начал разработку в 2000 году бельгиец Дрис Бёйтарт (Dries Buytaert), который и поныне является руководителем проекта. Название drupal является искажённым произношением голландского слова druppel (капля) и появилось в результате забавной ошибки. В 2000 году несколько студентов Антверпенского университета использовали общий ADSL-модем для доступа в интернет, и для общения пользователей этой маленькой локальной сети Дрис создал внутренний сайт. Программа, на которой работал сайт, не имела имени, пока Дрис не собрался регистрировать доменное имя для нового сайта, и в результате опечатки вместо dorp.org (от голландского dorp — деревня, вполне уместное имя для небольшого сообщества) был зарегистрирован drop.org (англ. drop — капля). Аудитория нового сайта со временем сменилась на интересующихся развитием новых веб-технологий, и новый сайт постепенно перешёл из любительского эксперимента в проект по обсуждениям идей веб-программирования. В 2001 году Дрис опубликовал исходный код drop.org под именем «Drupal». С тех пор разработка переместилась на зарегистрированный позднее сайт drupal.org, который приобрёл статус официального сайта проекта[16].

Со времени создания в процесс разработки были вовлечены сотни людей. Официальные разработчики ядра сейчас — это десятки человек, но много людей присылают свои патчи, включаемые в код системы. Также функциональность движка расширяется дополнительными модулями, которые создают сторонние разработчики. Например, в релизе 4.6 приняли участие 50 человек, приславших 338 поправок к коду, а в релизе 4.7 приняли участие уже 338 разработчиков, приславших примерно 1500 поправок. За пять лет существования проекта (к 2006 году) вышло 13 релизов. На данный момент (январь 2011) было разработано более 7000 дополнительных модулей, расширяющих базовые функции CMS. По статистике обращения к обновлениям движка, на март 2009 года в интернете — в пределах 120 тыс. активных сайтов на Drupal 6 (без учёта сайтов, находящихся за файрволлами, сайтов с отключённым механизмом обновлений). Это также не учитывает сайтов, работающих на ранних версиях Drupal.[17]

В 2007 году Дрис Бёйтарт создал фирму Acquia, направленную на коммерческую поддержку проектов и сервисов, основанных на Drupal, вдохновлённый успехами Canonical и RedHat, построивших бизнес на поддержке открытых проектов. В 2008 Бёйтарт получил докторскую степень в области информатики и приборостроения («Computer Science and Engineering»).

Drupal 8 был переписан на Symfony. Файлы шаблонов изменили расширение с .tpl на .twig.

Со временем вокруг международного сайта появились национальные сообщества, функционируют более 20 национальных сайтов поддержки на разных языках[18].

Логотип проекта[править | править код]

После выхода Drupal в свет очевидным вопросом стал выбор эмблемы проекта. Участники сообщества считали, что она должна быть связан с каплей или водой. Первоначально логотип Drupal выглядел как капля в круге, а со временем пришла идея сделать логотип в виде карикатурной капли с лицом, но сейчас для каждой версии системы используется свой логотип со стилизованной каплей. Стивен Виттенс (Steven Wittens) создал трёхмерную каплю, но идея не пошла в массы. Главным образом потому, что трёхмерный объект трудно печатать, редактировать и т. д.

Логотип системы для Drupal 7 был придуман Кристьяном Янсеном (Kristjan Jansen)[19], он представляет собой каплю, изображающую лицо, глаза показываются как две соединённые капли в виде знака бесконечности и выражают в символической форме бесконечные возможности.

Логотип системы для Drupal 8 представлял собой цифру 8 в капле.

Логотип системы для Drupal 9 и 10 представляет собой сетчатую каплю.

Награды[править | править код]

  • Трижды — в 2007, 2008 и 2009 годах — система получила награду Webware 100 (присуждается лучшим на сегодня сайтам, сервисам и приложениям Сети)[20];
  • Друпал — абсолютный победитель Packt Open Source CMS в 2008 г. и победитель в категории PHP в 2008 и 2009 гг. Основным соперником Drupal была «Joomla!». Победители выбирались жюри из экспертов в своей области, а также посетителями сайта Packt[21][22].
  • Победитель конкурса «Best open source applications 2010» в категории «Лучшая система управления web-контентом»[23]

Версии Drupal[править | править код]

Последние мажорные и поддерживаемые релизы Drupal
Последняя версия Срок поддержки
Drupal 11 Планируется релиз[24][25]
Drupal 10.x.x 15 декабря 2022 (2022-12-15) - 1 ноября 2025 (2025-11-01) (минимум).[26]

Окончание ожидается через 2 года 1 месяц 11 дней.

Drupal 10.1.4 До релиза Drupal 10.3.0 в июне 2024[27]
Drupal 10.0.11 До релиза Drupal 10.2.0 в декабре 2023[27]
Drupal 9.5.11 3 июня 2020 (2020-06-03) - 1 ноября 2023 (2023-11-01).[28]

Окончание ожидается через 1 месяц 11 дней.

Drupal 7.98 5 января 2011 (2011-01-05) - 5 января 2025 (2025-01-05).[29]

Окончание ожидается через 1 год 3 месяца 15 дней.

Drupal 8.9.20 19 ноября 2015 (2015-11-19) - 17 ноября 2021 (2021-11-17)[30]
Drupal 6.38 13 февраля 2008 - 26 февраля 2016[31]
Drupal 5.23 15 января 2007 - 21 января 2011[32]
Drupal 4.7.11 15 июня 2002 - 10 января 2008
Статус поддержки:     анонсирована     активная     временная     завершена

Номер каждой версии обновлений Drupal формируется по принципу мажор.минор.патч, например, 10.1.4, где номер мажорной (основной) версии указывает на совместимость, номер минорной (дополнительной) версии указывает на новые важные функции, а номер патча (исправления) указывает на исправления ошибок и незначительные улучшения.[33]

Из мажорных и минорных версий сообщество стремится активно поддерживать только текущую и, временно, предыдущую версии (например, Drupal 10 и, временно, Drupal 9). Время поддержки предыдущей мажорной версии, обычно, составляет около одного года, что считается достаточным сроком для обновления до текущей версии с активной поддержкой. Аналогичный принцип работает и для минорных версий (например, при выходе версии Drupal 10.2.0, временно осуществляется поддержка предыдущей минорной версии - 10.1.x, а поддержка версии 10.0.x прекращается).[27]

Для версии Drupal 7 было сделано исключение, и срок ее поддержки продлевался несколько раз ввиду широкого распространения и осложненным процессом перехода на новые мажорные версии, связанным с полным обновлением архитектуры системы начиная с Drupal 8.[34][29]. 7 июня 2023 года сообществом было объявлено, что поддержка Drupal 7 будет продлена последний раз до 5 января 2025 года (таким образом, полный срок поддержки Drupal 7 составит рекордные 14 лет)[29] и миграцию с Drupal 7 рекомендуется осуществить как можно быстрее, при этом рекомендуется мигрировать сразу на Drupal 10[35].

Ежемесячный цикл обновления версий Drupal (выпуск исправлений - патчей) запланирован в две фазы: выход некритических обновлений с исправлениями кода (bugfix) - каждую первую, а выход обновлений безопасности - каждую третью среду месяца.[36] При этом, выход обновлений безопасности не обязательно происходит именно в этом временном окне, а может произойти в любой момент по решению команды безопасности Drupal.

Сообществом Drupal рекомендуется использовать стабильную мажорную версию с активной поддержкой для всех новых проектов.

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

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

Технические особенности[править | править код]

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

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

Поддержка локализации[править | править код]

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

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

Методы структуризации содержимого[править | править код]

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

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

Механизмы расширения функциональности[править | править код]

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

Темы оформления[править | править код]

Дизайн сайта на Drupal можно менять с помощью тем оформлений. В качестве шаблонизатора («движок темы» в терминологии Drupal) используется PHPTemplate, однако есть возможность использовать Xtemplate, Smarty, Twig и другие.[источник не указан 3584 дня]

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

Системные требования[править | править код]

Drupal в первую очередь ориентирован на платформу LAMP, но возможны варианты использования другого системного ПО.

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

Критика[править | править код]

  • Критики Drupal ставили в упрёк разработчикам слабое использование объектных возможностей PHP в ранних версиях. Действительно, API Drupal практически не использовало имеющиеся в PHP возможности ООП. Разработчики аргументируэовали это слабой реализацией ООП в языке (особенно до версии PHP 5). Объектная модель в Drupal присутствовала, но в несколько нетрадиционном для PHP виде[38]. В Drupal 7 однако присутствует ряд нововведений, задействующих объектные возможности PHP 5. А в версии Drupal 8 официально принято использование ООП. Однако, в сообществе присутствовали весьма противоречивые мнения по данному поводу.
  • К недостаткам (но одновременно и к достоинствам) Drupal можно отнести отсутствие обратной совместимости API. В каждом новом большом релизе происходят большие изменения API, когда наряду с добавлением новых функций убираются некоторые старые или изменяются параметры вызова существующих. Это приводит к необходимости разработчикам сторонних модулей адаптировать их для работы с новыми версиями Drupal. Однако изменения API и процедура адаптации модулей к новым версиям описываются в документации для каждого релиза, также всегда предлагается механизм автоматизированного апгрейда ядра системы на новую версию.[39][40] Плюс данной схемы разработки — нет необходимости тянуть из версии в версию программный слой совместимости со старыми API, что облегчает текущий код системы.

Форки Drupal[править | править код]

Проект Backdrop CMS[41][42][43] был создан как форк Drupal, его целью ставится сохранить принципы архитектуры Drupal, применяемые до Drupal 8.

Сообщество[править | править код]

На drupal.org зарегистрировано более 1 млн учётных записей, из них — 30 тыс. учётных записей разработчиков. Постоянно действуют несколько списков рассылки, открыто несколько IRC-каналов.

Ассоциация Drupal — некоммерческая организация, занимающаяся организацией мероприятий DrupalCon, сбором пожертвований, обучением и продвижением.

Литература[править | править код]

Книги на русском языке[править | править код]

Drupal 7
  • Тодд Томлинсон. CMS Drupal 7: руководство по разработке системы управления веб-сайтом, 3-е издание = Pro Drupal 7 Development, 3rd Edition. — М.: «Вильямс», 2011. — 560 с. — ISBN 978-5-8459-1743-0.
  • Мелансон Б., Нордин Д., Луиси Ж. Профессиональная разработка сайтов на Drupal 7. — СПб.: «Питер», 2013. — 688 с. — ISBN 978-5-4461-0054-5.
  • Алексей Черных. Drupal 7. — «Эксмо», 2011. — С. 208. — ISBN 978-5-699-47059-4 rus.
  • Колисниченко Денис Николаевич. Drupal 7. Руководство пользователя. — «Диалектика», 2011. — С. 256. — ISBN 978-5-8459-1717-1.
  • Ромашов В. CMS Drupal: система управления содержимым сайта (+CD с видеокурсом). — СПб.: «Питер», 2010. — С. 256. — ISBN 978-5-49807-241-8.
Drupal 6
  • Анжела Байрон, Эдисон Берри, Натан Хог, Джефф Итон, Джеймс Уокер, Джефф Роббинс. Drupal: создание и управление сайтом = Using Drupal. — «Символ», 2010. — С. 576. — ISBN 978-0-596-51580-5 eng. — ISBN 978-5-93286-174-5 rus.
  • Джон Вандюк. CMS Drupal: руководство по разработке системы управления сайтом = Pro Drupal development. — «Вильямс», 2009. — С. 576. — ISBN 978-1-43-020989-8 eng. — ISBN 978-5-8459-1513-9 rus.
  • Томас Захреддин. Drupal 6 = Das Drupal 6 Praxisbuch. — «Эксмо», 2008. — С. 432. — ISBN 978-5-699-36219-6.
  • Дэвид Мерсер. Drupal 6. Создание надежных и полнофункциональных веб-сайтов, блогов, форумов, порталов и сайтов-сообществ = Building powerful and robust websites with Drupal 6: Build your own professional blog, forum, portal or community website with Drupal 6. — «Вильямс», 2009. — С. 272. — ISBN 978-1-847-19297-4 eng. — ISBN 978-5-8459-1556-6 rus.
  • В.Ромашов. CMS Drupal: система управления содержимым сайта. — «Питер», 2009. — С. 256. — ISBN 978-5-49807-241-8 rus.
Drupal 5

Книги на английском языке[править | править код]

  • 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 978-1-59059-755-2
  • Matt Butcher «Learning Drupal 6 Module Development», ISBN 978-1-84719-444-2

Примечания[править | править код]

  1. drupal 10.1.4.
  2. 10.1.4.
  3. drupal 10.0.11.
  4. 10.0.11.
  5. drupal 9.5.11.
  6. 9.5.11.
  7. drupal 7.98.
  8. 7.98.
  9. https://web.archive.org/web/20170214210656/https://api.drupal.org/api/drupal (англ.)
  10. The drupal Open Source Project on Open Hub: Licenses Page — 2006.
  11. Modules | drupal.org
  12. Open Source Usage Distribution in the Top 10k Sites. BuiltWith Pty Ltd (2 января 2022). Дата обращения: 7 января 2022. Архивировано 8 января 2022 года.
  13. W3Techs. Usage Statistics and Market Share of Content Management Systems. W3Techs (13 июня 2022). Дата обращения: 13 июня 2022.
  14. The State of Drupal 2010 speech (10 марта 2001). Дата обращения: 31 августа 2011.
  15. Knowledge management with Drupal (19 мая 2004).
  16. История проекта Архивная копия от 28 февраля 2009 на Wayback Machine (англ.)
  17. Drupal 6 growth | Dries Buytaert. Дата обращения: 22 апреля 2009. Архивировано 27 апреля 2009 года.
  18. Список сообществ Drupal. Дата обращения: 8 ноября 2008. Архивировано 12 декабря 2008 года.
  19. History of the Druplicon logo Архивная копия от 9 февраля 2010 на Wayback Machine, drupal.org  (Дата обращения: 24 марта 2010)
  20. Друпал — победитель Webware 100 Архивировано 3 июня 2008 года.
  21. Drupal overall winner of the Packt Open Source CMS awards Архивировано 2 апреля 2009 года. (англ.)
  22. Open Source CMS Award Previous Winners | Packt Publishing Technical & IT Book and eBook Store Архивная копия от 14 июня 2008 на Wayback Machine (англ.)
  23. Bossie Awards 2010: The best open source applications Архивировано 7 декабря 2013 года. (англ.)
  24. A plan for Drupal 11 | Dries Buytaert. Дата обращения: 10 января 2023. Архивировано 10 января 2023 года.
  25. An updated plan for Drupal 11 | Dries Buytaert
  26. Symfony, High Performance PHP Framework for Web Development.
  27. 1 2 3 Drupal core release cycle | Core release cycles | About guide on Drupal.org
  28. How long will Drupal 9 be supported? | Drupal 9 release date and what it means | Drupal Wiki guide on Drupal.org. Дата обращения: 10 января 2023. Архивировано 10 января 2023 года.
  29. 1 2 3 End of life announcement and changes to Drupal 7 support - PSA-2023-06-07 | Drupal.org
  30. Drupal 8 is now end-of-life - PSA-2021-11-30 | Drupal.org. Дата обращения: 10 января 2023. Архивировано 10 января 2023 года.
  31. Drupal 6 end-of-life announcement | Drupal.org. Дата обращения: 10 января 2023. Архивировано 10 января 2023 года.
  32. So long, Drupal 5.x (End of Life Announcement) | Drupal.org. Дата обращения: 10 января 2023. Архивировано 10 января 2023 года.
  33. Understanding Drupal version numbers | Understanding Drupal | Drupal Wiki guide on Drupal.org. Дата обращения: 10 января 2023. Архивировано 5 октября 2021 года.
  34. Drupal 7 will reach end-of-life in November of 2022 - PSA-2019-02-25 | Drupal.org. Дата обращения: 10 апреля 2023. Архивировано 10 апреля 2023 года.
  35. Drupal 7 End of Life | Drupal.org
  36. Drupal core release cycle: major, minor, and patch releases | Core release cycles | About guide on Drupal.org. Дата обращения: 10 января 2023. Архивировано 10 января 2023 года.
  37. Статья по адаптации на сайте IBM Developer Networks. Дата обращения: 16 мая 2007. Архивировано 29 апреля 2007 года.
  38. Программирование в Drupal с точки зрения ООП Архивировано 21 мая 2007 года.
  39. Обновление системы (для пользователей). Дата обращения: 19 декабря 2009. Архивировано из оригинала 23 марта 2011 года.
  40. Обновление модулей (для разработчиков). Дата обращения: 19 декабря 2009. Архивировано из оригинала 22 мая 2011 года.
  41. Introducing Backdrop CMS. Дата обращения: 6 апреля 2015. Архивировано 14 марта 2015 года.
  42. Todd Tomlinson. Migrating from Drupal to Backdrop. — Apress. — P. 150. — ISBN 978-1-484217-59-7.
  43. Todd Tomlinson. Beginning Backdrop CMS. — Apress, 2016. — 350 с. — ISBN 978-1-484219-69-0.

Ссылки[править | править код]