Drupal

Drupal входит в "большую тройку" самых популярных CMS (Content Management System – система для управления содержимым) на данный момент. И, с каждым годом, интерес к данной системе неуклонно растёт. За последний год процент пользователей Drupal вырос с 2% до 2.3%, и сейчас можно с уверенностью говорить, что 2.3% всех сайтов в мире работают именно на нём. Это хорошая динамика, в то время как WordPress и Joomla не показывают роста вообще. Если же оценивать долю рынка, которую занимает Drupal, то сейчас это 7.1% среди всех CMS, за последний год добавилось 0.4%.

Появилась эта система, благодаря голландцу, который будучи студентом, в 2000 г. организовал локальную сеть между корпусами общежития своего университета. А уже в 2004г. Dries Buytaert (Дрис Бёйтарт), собрав команду разработчиков, выпустил версию Drupal 4.5 (от голл. druppel — капля), которую и можно считать началом жизни проекта.

CMS и CMF

Итак, определим что же такое CMS и CMF.

CMS есть специальная система, которая устанавливается на хостинге и выполняет две основных функции:

  • показывает страницы сайта для пользователей, генерируя их содержимое, используя заранее выбранные шаблоны, дизайн, контент, хранящиеся в базе данных;
  • помогает владельцу сайта без специальных навыков и умений управлять сайтом, выкладывать контент, создавать ссылки, форматировать текст, загружать картинки и видеозаписи.

Content Management Framework (CMF) — это каркасная система для управления содержимым, это уже готовый инструментарий для создания систем управления содержимым и веб приложений вцелом. Как правило, на основе CMF и создаются CMS. Например, JoomlaWordpress, Drupal, TYPO3 и т.д.

По данным CMSMatrix на май 2015 года существует более 1200 CMS, в том числе свободных, открытых и ориентированных, в основном, на LAMP-платформу (серверное программное обеспечение). Различаются они, в основном, своими функциональными возможностями и простотой управления. Самыми функциональными CMS, распространенными на русскоязычном пространстве интернета, являются: JoomlaWordpress, Drupal.

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

Drupal входит в число бесплатных систем управления, на основе которых можно создавать функциональные и легко управляемые сайты без серьезных финансовых затрат; её гибкость и расширяемость позволяют получать нетиповые конфигурации, таким образом, фактически приравнивая к CMF. Среди аналогов Drupal обладает еще и наименьшей сложностью в освоении (как для разработчика, так и для администратора сайта).

Краткая история развития CMS и Drupal

Основные вехи:

2000: Франциско Бурзи создает PHP-версию phpNuke — одну из самых массовых CMS, породившую множество форков. Примерно тогда же голландец Дрис Бёйтаерт создает прототип Drupal для использования в личных целях;

2001: Появляется первый релиз открытого кода ядра сайта (прототипа Drupal);

2001: Мишель Вальдриги начал разработку движка b2, впоследствии к проекту присоединились Мэтт Мюлленвег и Майк Литтл.

2003: Вальдриги прекратил разработку, поэтому автором WordPress считается Мэтт Мюлленвег. Права на товарную марку «WordPress» принадлежат некоммерческому фонду WordPress Foundation.

2004: Выпущена версия Drupal 4.5;

2005: От открытого к тому моменту проекта Mambo, отделяется сообщество разработчиков, решающих независимо развивать CMS Joomla — одну из популярнейших открытых и свободных CMS, построенную в соответствии с модульно-ориентированным подходом;

2007: Дрис Бёйтаерт создает коммерческую компанию Acquia, ориентированную на коммерческую поддержку проектов и сервисов, основанных на Drupal, вдохновленный успехами Canonical и RedHat.

Сейчас Drupal распространяется под лицензией GPL v.2. Разработчики поддерживают две ветки (последнюю и предпоследнюю стабильные). Сейчас это ветки 6.x и 7.x. В виде beta-версии уже существует Drupal 8 (на май 2015 года), финальной релиз которой ожидается в текущем году.

Описание Drupal

Drupal - это система, написанная на языке PHP, использующая в качестве хранилища содержимого реляционную базу данных (поддерживаются MySQL, PostgreSQL, а также любые СУБД поддерживаемые библиотекой PEAR). Drupal является свободным программным обеспечением, с открытым исходным кодом, и защищённым лицензией GPL («свободная» лицензия) и создаётся усилиями энтузиастов со всего мира.

Его архитектура позволяет создавать сайты различного назначения и сложности — от блогов и форумов, до информационных архивов, сайтов-порталов. Это достигается благодаря модульно-ориентированному подходу к организации содержания сайта. В системе имеются различные функциональные модули (лента новостей, форум, блог, статические страницы и пр.), содержание каждого модуля существует только в его контексте. Drupal пропагандирует контентно-ориентированный подход к организации содержания сайтов. Модуль, создающий, обрабатывающий или выводящий материал не определяет положение материала в структуре сайта. Одни и те же материалы могут обрабатываться разными модулями, относиться к разным типам материалов, но объединяться содержательной тематикой и потому быть связанными.

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

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

  • единая категоризации всех видов содержимого - от форумных сообщений до блогов и новостных статей;
  • вложенность категорий любой глубины;
  • поиск по содержимому сайта;
  • разграничение доступа пользователей к документам (ролевая модель);
  • динамическое построение меню;
  • поддержка XML-форматов (вывод документов в RDF/RSS, агрегация материалов с других сайтов, BlogAPI для публикации материалов с помощью внешних приложений);
  • поддержка общей авторизации между сайтами на Drupal ("сайты-партнёры");
  • короткие URL;
  • поддержка сменных тем оформления сайта с предоставлением нескольких готовых вариантов;
  • поддержка переводов интерфейса сайта на разные языки;
  • возможность создания сайтов с пересекающимся содержимым (например, общей базой пользователей или общими настройками);
  • раздельные конфигурации сайта для различных виртуальных хостов (в том числе собственные наборы модулей и тем оформления для каждого подсайта);
  • механизм для ограничения нагрузки на сайт (автоматическое отключение при высокой посещаемости части информационных блоков и модулей).

Расширяемость Drupal

Модули — это расширения, добавляющие дополнительный функционал. Фактически, Drupal и есть ядро с набором модулей, которые разрабатываются и поддерживаются командой проекта. Помимо модулей, входящих в состав ядра, существует возможность скачать дополнительные модули из хранилища-репозитория. Так же, система позволяет создавать их самостоятельно.

Основными особенностями работы с модулями Drupal являются:

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

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

Итак, основные возможности локализации Drupal:

Таксономия в Drupal

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

Таксономия - механизм, позволяющий создавать произвольное количество категорий (тегов, терминов), ассоциировать с ними модули и материалы сайта (с целью их классификации). Основное предназначение таксономии - это разбиение данных на категории.

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

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

Основными понятиями, используемыми в таксономии являются: Тег — категория и Словарь — группа.

Иллюстрация связей материалов факультетского сайта, возможных в рамках модульно-ориентированного подхода (голубые непрерывные линии) и таксономии (пунктирные линии цветов, соответвующих категориям):

Документация Drupal

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

  •  документацию по API для разработчиков (локализованную пока не полностью);
  • руководства для пользователей и администраторов Drupal (локализованные);
  • встроенную справочную систему для администраторов сайта и пользователей.

Оформление Drupal

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

Начиная с версии 4.7 Drupal поддерживает технологию Ajax, для динамической подгрузки содержимого без полного обновления страниц. Это позволяет максимально ускорить работу сайта, независимо от сложности его оформления.

Преимущества Drupal в области дизайна:

Управление доступом в Drupal

Часто, на сайтах предусматривается регистрация множества пользователей, в этом случае, требуется ограничение прав доступа, так как от этого зависит безопасность работы. Для этого, у Drupal есть простое решние - создаются роли, которые присваиваются определённым группам пользователей. Каждому пользователю можно присвоить несколько ролей, и каждую роль можно присвоить нескольким пользователям. Таким образом сочетая различные роли, можно предоставлять пользователю нужные доступы. Такой подход позволяет оптимально распределить права, но если потребуется больше гибкости, например, настройка доступа для отдельных полей материала, а не для материала в целом - это можно сделать, используя дополнительные модули.

Итак, если коротко, Drupal предоставляет:

  • разграничение доступа к различным функциям и материалам всей системы и модулей на основе ролей (аналог групп пользователей в Unix);
  • наличие модулей для автоматического управления ролями;
  • настраиваемые подсистемы регистрации и авторизации пользователей, расширяемые с помощью модулей.

Готовность Drupal к поисковой оптимизации (SEO)

SEO (англ. Search Engine Optimization), поисковая оптимизация - это комплекс способов и методов, предназначенных для повышения позиций сайта в результатах выдачи поисковых систем, по определенным запросам пользователей, с целью продвижения сайта. Иными словами, это меры для раскрутки сайта. После создания сайта, это следующий, важный, шаг на пути к успешному Интернет-бизнесу.

Обычно, говоря о SEO как о способе достижения наилучших позиций в результатах поиска, имеют ввиду две его составляющих: внутреннюю оптимизацию (on-page SEO) сайта или конкретной страницы и внешнее продвижение (off-page SEO). Лучших результатов достигают при одновременном использовании оптимизации с использованием продвигаемых страниц внешними входящими ссылками.

Drupal предоставляет все необходимые средства для успешной поисковой оптимизации и продвижения сайта в Интернет:

Так же, Drupal имеет специальный дополнительный модуль для отслеживания результатов проведенной нами оптимизации (увеличения посетителей сайта).

Drupal сообщество

Сообщество организует сотни крупных и мелких мероприятий. Ежегодно проводится международная конференция Drupal–разработчиков, на которую собираются участники из разных стран: в 2007г. конференцию в Барселоне посетили более 430 участников, а уже на следующий год, количество участников превысило 500 человек; DrupalCon Austin, 2014 - 3300 участников, DrupalCon LA, 2015 - бюджет несколько миллионов долларов.

Drupal сегодня

Drupal — победитель конкурсов в 2007 и 2008 годах Open Source CMS Award в номинации Overall, трехкратный номинант Webware 100 и имеет лавинообразную популярность:

  • более 600 тыс. скачиваний дистрибутива в год (к сожалению более свежей статистики найти не удалось);
  • более 1,1 млн. работающих сайтов на базе Drupal, в том числе сотни популярнейших и авторитетных сайтов.

Международный и российский рейтинги сайтов на Drupal.

Вот лишь небольшой перечень известных сайтов, созданных на Drupal:

Drupal - быстро развивающаяся бесплатная система, имеющая сотни разработчиков и всего 20 тыс. строк кода, при этом, функциональность базового дистрибутива вполне соответствует другим популярным CMS. Предлагает более 17000 готовых модулей, в том числе, модулей для электронной коммерциипостроения сообществ и прочих популярных задач. Работает на популярной LAMP-платформе и имеет локализацию более чем на сто языков. Занимает первые позиции по количеству созданных сайтов в рунете и мире.

Drupal позволяет создавать как простые сайты, так и сайты высокой степени сложности, какой нельзя добиться на том же WordPress, он готов к использованию «из коробки» - сайт может работать сразу после того, как был установлен в корневую директорию www. Но его истинными преимуществами являются большая, по сравнению с другими CMS, гибкость и расширяемость, контентно-ориентированный подход к организации содержания сайта, и хорошее быстродействие, обеспечиваемое встроенным механизмом кеширования.