Что такое CMS?

Если сайт часто обновляется и приходится менять его структуру или если он является чем-то большим, чем просто онлайновое хранилище HTML-файлов — не обойтись без использования скриптов. C некоторого момента развития сайта и расширения его контента затраты на поддержку десятков разнообразных скриптов, написанных разными авторами с использованием различных программных технологий возрастают настолько, что удобства их использования становится сомнительным. CMS (Content Management System) — набор программных средств, предоставляющий комплексный подход к созданию сайта.

Что такое Drupal?

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

«Из коробки» Drupal предлагает следующие решения:

  • Механизмы рубрикации. Каждый документ сайта может входить в одну или несколько рубрик. Сами же рубрики могут составлять списки или сложные иерархические структуры (с множественными предками и перекрестными ссылками элементов).
  • Готовые решения типовых задач. Новостной сайт, блог или форум — возможности обеспечиваемые встроенными модулями движка. Поставив движок на хостинг вы получаете эти возможности в готовом виде.
  • Интеграция всех компонентов. Возможна сквозная рубрикация по всем типам документов сайта (например список ключевых слов, общий для форумов и блогов). Форум с выводом интересных новостей на главную страницу или новостной сайт с блогами и форумами — все это будет выглядеть частями единого сайта, а не разрозненными страничками объединенными лишь общим дизайном.
  • Навигация и поиск. Книга сайта позволяет группировать интересные материалы, которые желательно выделить и не потерять в будущем. Также для удобства доступа к архивным материалам служат сквозная рубрикация контента и доступ к архивным материалам по дате публикации. Документы сохраняют неизменные ссылки все время своей жизни (т.н. перманентные ссылки). Также с помощью коротких ссылок и псевдонимов сайт приобретает короткие и запоминающиеся ссылки разделов и отдельных страниц, не использующие специальных символов и поэтому хорошо индексируемые поисковыми системами. На сайте Drupal вы не увидите длинных неудобоваримых ссылок типа modules.php?op=modload&name=News&file=article&sid=166&mode=&order=0&thold=0 (пример с реального сайта), которыми по сию пору страдают многие CMS.

Возможности drupal

  • Таксономия (taxonomy) — оригинальная концепция для задания структуры сайта, отделяющая структуру от представления. С помощью таксономии можно определить произвольное число рубрик, в которых будут в дальнейшем помещаться материалы сайта. Эти рубрики могут быть представлены как плоские списки или иерархические структуры произвольной вложенности (как древовидные, когда элемент имеет только одного родителя в иерархии, так и произвольные, когда элемент может иметь сразу нескольких родителей). В результате получаем такую схему: документы (nodes) различных типов (node types) ассоциируются с рубриками (terms), рубрики в свою очередь разбиваются на принадлежность к словарям (vocabularies). Такая схема позволяет выстраивать на сайте несколько независимых структур, ассоциируя одни и те же документы (как бы листья на структурном «дереве» сайта) с различными структурами.
    Пример: словарь «Форумы» задаёт дерево форумов/подфорумов произвольно вложенности и применяется только к документам типа «форумный топик», словарь «Новости» — плоский список рубрик для новостных публикаций (документы типа «статья»), а словарь «Ключевые слова» ассоциируется с обоими типами и по выбранному ключевому слову можно найти как форумные топики так и новости. И т.д.
  • Темы — как в любой системе гордо именующей себя CMS, содержимое сайта в Drupal отделено от дизайна. С помощью сменных тем можно очень значительно изменять дизайн не трогая при этом содержимое и структуру сайта. Drupal не привязан к какому-то одному «единственно верному» механизму реализации тем, разработчик сайта может выбирать наиболее удобные ему способы формирования дизайна сайта. Но Drupal предлагает ряд готовых решений в виде движков тем (theme engines), таких как например xtemplate (темы с шаблонами в XML) или phptemplate (темы с шаблонами на PHP). Однако значительных изменений дизайна можно порой добиться манипуляцией стилями.
  • Комментарии — любой документ сайта посетители могут комментировать. Конечно, если в настройках им разрешена эта возможность — можно ограничивать возможность комментариев для отдельных документов или целиком для типов документов, а также настраивать их представление (нитевое или плоское, рейтинг и фильтрация по нему и т.п.). Для анонимных посетителей предусмотрены поля для их идентификации (имя, email, адрес сайта), но эта возможность также отключаема.
  • Дневники (blogs) — популярное в интернете развлечение, известное как «блоги» доступно в Drupal «из коробки». Ведение дневников, возможность комментировать их другим пользователям, а также поддержка через XML-RPC внешних программ-клиентов для помещения заметок в дневники.
  • Книга сайта (collaborative book) — идея в чем-то похожая на Wiki, когда каждый пользователь может вносить свои дополнения и исправления в текст. В реализации Drupal документы могут проходить через очередь модерации. Большинство документов сайта могут быть включены как страницы книги. Это можно использовать например для архивации обсуждений форумов, когда из наиболее интересных обсуждений можно составить книгу-архив. При этом включенные в книгу материалы по прежнему остаются доступными в своих разделах (т.е. форумное обсуждение будет видно на форуме, но также будет являться страницей книги сайта).
  • Форум — имеется встроенный движок форума, удачно вписывающийся в структуру всего сайта. Поскольку структура форумов строится на таксономии, возможно создание категорий и форумов произвольной вложенности. Включены основные форумные функции, однако отсутствуют средства массовой модерации, поэтому в случае построения активных форумных сайтов, содержащих сотни тысяч или миллионы сообщений форум Drupal не будет удобен — лучше в этом случае посмотреть в сторону специализированных форумных движков (phpbb например).
  • Новости в оффлайн (content syndication) — Drupal экспортирует большинство материалов в формате RDF/RSS, Atom и некоторых других, удобных для просмотра в оффлайн с помощью внешних программ, либо для автоматизированной публикации на других сайтах.
  • Сбор новостей — новости предоставляемые в RDF/RSS с других сайтов могут собираться Drupal и отображаться на сайте.
  • Разграничение прав доступа — основано на присвоении одной или нескольких ролей пользователям, непосредственно права доступа к различным функциям сайта закрепляются за ролями. Подключаемые модули сами определяют к каким из своих функций дать доступ определённым ролям. Понятная и логичная схема, входящая в стандартную поставку Drupal, достаточна для большинства задач. Для случаев, когда подобной схемы недостаточно, Drupal предоставляет более мощный механизм, основанный на присвоении прав (на просмотр, создание, изменение и удаление) каждому отдельному документу. Но интерфейс для управления этим механизмом в текущей версии CMS отсутствует, для его использования предлагаются дополнительные модули.
  • Встраиваемые скрипты — в Drupal возможно включение PHP-скриптов в любых документах сайта (разумеется это ограничено в целях безопасности и доступно не всем пользователям). В скриптах можно обращаться к функциям API Drupal — это позволяет оперативно создавать динамические странички с функциональностью не предусмотренной движком, не прибегая к написанию отдельных модулей.
  • Интернационализация — Drupal предоставляет различные механизмы для интернационализации и локализации интерфейса (не содержимого) сайта. В том числе возможность правки переводов «на лету» через вебинтерфейс (для переводов хранящихся в БД). Также удачной особенностью архитектуры Drupal является повсеместное использование в нем Unicode — все тексты хранятся в UTF-8, в этой же кодировке отдаются новости и почтовые сообщения. Такая унификация позволяет публиковать на сайте материалы на различных языках не требуя переключения кодировок в браузере — на одной страничке мирно уживутся тексты на русском, немецком и китайском. Следует отметить, что для получения полной многоязычности (синхронное ведение содержимого сайта, а не только интерфейсных надписей на многих языках) встроенного решения нет (но предлагается доп. модуль i18n, либо для сайтов не требующих синхронизации разноязычного содержимого можно использовать возможности мультисайтинга Drupal).

Эргономика

  • Персонализация — Drupal позволяет пользователям настраивать представление сайта по собственному вкусу. Это включает выбор тем и набор информационных блоков, которые пользователь желает видеть на сайте.
  • Перманентные ссылки (permalinks) — каждый документ (node) созданный на сайте, получает на все время своего существования уникальный ID, ссылка на страницу для просмотра этого документа всегда будет оставаться неизменной, к какой-бы категории или типу этот документ не относился. Например перемещение обсуждения из одного форума в другой не приведет к изменению ссылки на это обсуждение.
  • Короткие URL (friendly URL’s) — Drupal использует механизм mod_rewrite сервера Apache для получения эстетично выглядящих именований страниц сайта, позволяя избежать использования параметров в строке URL. Это также значительно улучшает отношение многих поисковых систем к сайту, поскольку не все поисковики любят возиться со страничками содержащими ’?’, ’&’ и прочие спецсимволы в строке URL.
  • Псевдонимы (URL aliasing) — можно присваивать альтернативные имена страницам, например чтобы дать им более запоминающиеся названия: www.example.com/node/view/31 -> www.example.com/about.
  • Управление версиями (revisions) — при изменении любого документа сайта можно создать новую версию документа, при этом хранится история версий и при необходимости можно откатиться к старым правкам документа.
  • Общественная модерация — может быть удобна для некоторых типов сайтов, например для сайтов различных сообществ, где в наполнении сайта материалами участвует большое количество пользователей. Такая модерация представляет собой механизм одобрения материалов сайта самими его посетителями (или отдельными их группами). Каждый материал имеет свой рейтинг и пользователи могут повышать его или понижать — в результате популярные и полезные документы могут быть опубликованы, перемещены на главную страницу сайта, вызывающие недовольство пользователей — удалены из списка опубликованных. Этот механизм можно настраивать для различных ролей пользователей.
  • Отслеживание обновлений (tracker) — все обновленные документы сайта или материалы к которым появились новые комментарии группируются на общей странице, ссылка на которой присутствует в меню пользователя. Особенно полезно для сайтов имеющих сложную структуру и большое количество разделов.

Поддержка

  • Свободное п/о (open source) — Drupal является свободным программным обеспечением, распространяемым под лицензией GNU GPL. Это означает, что используя Drupal вы получаете полные исходные тексты на которых он построен и можете вносить в них собственные изменения.
  • Документация — документация поставляется вместе с Drupal и гораздо больше на сайте drupal.org (также drupal.ru), нет каких-либо аспектов реализации закрытых от пользователей, поскольку Drupal является свободным п/о. Впрочем, по этой же причине — документация по некоторым частям системы является не всегда полной, если вообще имеется. Побочный эффект открытых проектов — энтузиасты создают то, что им интересно, а написание документации далеко не всегда увлекательное занятие 😉
  • Поддержка сообщества — сильная сторона свободного п/о, поскольку пользователи и разработчики, для которых проект является в первую очередь увлекательным хобби, охотнее оказывают помощь, чем в коммерческих проектах, где вы как правило ограничены общением со службой поддержки. Учитывая, что Drupal и CMS вообще — развлечение людей в большинстве своем технически грамотных, техподдержка от сообщества энтузиастов-спецов зачастую эффективнее чем от пофигистичных коммерческих служб.
  • Сторонние разработчики (freelancers) — проще найти специалистов для работы с opensource системой (ведь API и исходные коды полностью официально доступны и грамотному программисту не составит труда быстро разобраться в архитектуре), чем для работ с закрытыми проприетарными системами, где одно только обучение специалиста влетит в копеечку. Ко всему прочему уже немало людей интересуются Drupal и имеют готовый опыт работы с ним.

Масштабируемость

  • Модульность — к небольшому ядру Drupal можно добавлять новые возможности при помощи модулей. Существует большое количество готовых модулей для различных применений — от фильтров csv и галерей изображений, до ведения проектов и ecommerce.
    • Навскидку несколько примеров дополнительных модулей к Drupal:
      • weblink — каталог вебссылок для сайта
      • mailhandler — интеграция сайта с электронной почтой (публикация материалов посредством email)
      • e-commerce — поддержка электронного магазина или платёжных систем
      • image — галерея изображений на сайте
      • postcard — рассылка электронных открыток
      • htmlarea — адаптация WYSIWYG редактора HTMLArea к Drupal
      • foaf — перенос учётных данных пользователей между разными сайтами на основе спецификации FOAF
      • spam — обучаемый (построен на байесовском алгоритме) фильтр спама для сайта
  • Кэширование страниц — страницы просмотренные пользователями кэшируются в базе и анонимные пользователи получают страницы из кэша, без повторной генерации каждого информационного блока отображаемого на странице. Это позволяет значительно снизить число запросов к базе данных и увеличить скорость отдачи страниц.
  • Многоплатформенность — Drupal поддерживает Apache и MS IIS, СУБД MySQL, PostgreSQL и MS SQL (не составит сложности перевод на любую другую СУБД, поддерживающую ANSI SQL).

Drupal (друпал)

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

Понимая это, разработчики CMS Drupal (на русском название движка устоялось как «друпал») не стали распыляться на создание универсального продукта, а сосредоточили силы на сайтах, ориентированных на общение — такие как блоги, форумы, средства коллективной разработки. Что впрочем не ограничивает применение Drupal только этими задачами — дополнительные модули (можно использовать готовые, можно создавать свои) значительно расширяют сферу применения. Есть вещи, которые реализованы слабо или потребуют доводки перед применением. Например, Drupal вряд ли подойдет если вам требуется такая разновидность п/о, как groupware — есть отдельные компоненты, но готовое решение «из коробки» отсутствует. В opensource разработках (а именно по такой схеме ведутся работы над Drupal — opensource под лицензией GNU GPL) только массовый спрос и самое главное желание самих разработчиков могут привести к появлению новых функций.

Радует, что разработчики придерживаются концепции выраженной в девизе сообщества: Drupal — community plumbing. Не отвлекаясь на различные мелочи и украшательства и к счастью не пытаясь сделать из своей системы универсальную CMS. Пока это справедливо — Drupal будет оставаться эффективным средством для создания сайтов. Не все концепции этой системы могут показаться очевидными, как и любая стоящая вещь потребуется время на изучение и понимание.

Но, в результате вы получите в свои руки мощный инструмент для построения сайтов.