Этот пост адресован, в первую очередь тем, кто так или иначе связан с разработкой web-сайтов. Дело в том, что я очень долго искал инструмент, позволяющий избежать рутинных операций при разработке. Похоже, наконец, нашел. Drupal, именно на базе этой системы построен нынешний сайт Internews.
Привожу список доступных "фич" (может быть многократно расширен путем установки и написания собственных модулей) :
------------
Таксономия (taxonomy) - оригинальная концепция для задания структуры сайта, отделяющая структуру от представления. Определяя словари и их элементы в таксономии можно формировать "оглавление" сайта произвольной вложенности, а также с перекрещивающимися ссылками. Затем, при заполнении сайта документы будут включаться в соответствующие пункты таксономии.
Темы - как и в любой другой системе, гордо именующейся CMS содержимое сайта в Drupal отделено от дизайна. С помощью сменных тем можно менять дизайн не трогая содержимое и структуру. Drupal предлагает различные механизмы реализации тем - PHP, XML, использование CSS.
Комментарии - любой документ сайта посетители могут комментировать. Конечно, если в настройках им разрешена эта возможность - можно ограничивать возможность комментариев для отдельных документов или целиком для типов документов, а также настраивать их представление (нитевое или плоское, рейтинг и фильтрация по нему и т.п.)
Дневники (blogs) - популярное в интернете развлечение, известное как "блоги" доступно в Drupal "из коробки". Ведение дневников, возможность комментировать их другим пользователям, а также поддержка через XML-RPC внешних программ-клиентов для ведения и просмотра "блогов".
Работа над книгой (collaborative book) - идея в чем-то похожая на Wiki, когда каждый пользователь может вносить свои дополнения и исправления в текст. В реализации Drupal документы могут проходить через очередь модерации, однако также может быть использован классический подход Wiki, когда изменения внесенные любым пользователем немедленно отражаются на сайте. Большинство документов сайта могут быть включены как страницы книги. Скажем можно включить в книгу обсуждение форума, вместе с комментариями, при этом обсуждение по-прежнему останется доступным как тема форума (т.е. включается как бы ссылка не него).
Форум - имеется встроенный движок форума, удачно вписывающийся в структуру всего сайта. Поскольку структура форумов строится на таксономии, возможно создание категорий и форумов произвольной вложенности. Включены основные форумные функции, однако отсутствуют средства массовой модерации, поэтому в случае построения форумных сайтов, содержащих десятки или сотни тысяч сообщений и активно обновляемых форум Drupal не будет удобен - лучше в этом случае посмотреть в сторону профессиональных форумных движков (phpbb например) и их интеграции с сайтом на Drupal.
Новости оффлайн (content syndication) - Drupal экспортирует многие материалы в формате RDF/RSS, удобном для просмотра в оффлайн с помощью внешних программ (т.е. не броузером, но в Opera и Firefox такая возможность встроена).
Сбор новостей - новости предоставляемые в RDF/RSS с других сайтов могут собираться Drupal и отображаться на сайте.
Разграничение прав доступа - основано на присвоении ролей пользователям, непосредственно права доступа к различным функциям сайта закрепляются за ролями. Схема понятная и логичная, но в реализации Drupal несколько упрощена - скажем нет возможности административными методами сделать определенную страницу (а не все страницы одного типа) доступной только ограниченному кругу пользователей. Однако в большинстве случаев достаточно группового присвоения прав.
Встраиваемые скрипты - в Drupal возможно включение PHP-скриптов практически в любых документах сайта (разумеется это ограничено в целях безопасности и доступно не всем пользователям). В скриптах можно обращаться к функциям API Drupal - это позволяет оперативно создавать динамические странички с функциональностью не предусмотренной движком, не прибегая к написанию отдельных модулей.
Интернационализация - Drupal предоставляет различные механизмы для интернационализации и локализации интерфейса сайта. В том числе возможность правки переводов "на лету" через вебинтерфейс (для переводов хранящихся в БД). Ложка дегтя для русскоговорящих пользователей - единого перевода интерфейса на русский пока нет. Работы ведутся. Также удачной особенностью архитектуры Drupal является повсеместное использование в нем Unicode - все тексты хранятся в UTF-8, в этой же кодировке отдаются новости и почтовые сообщения. Такая унификация позволяет публиковать на сайте материалы на различных языках не требуя переключения кодировок в браузере - на одной страничке мирно уживутся тексты на русском, немецком и китайском.
Эргономика
Персонализация - Drupal позволяет пользователям настраивать представление сайта по собственному вкусу. Это включает выбор тем и набор информационных блоков, которые пользователь желает видеть на сайте.
Перманентные ссылки (permalinks) - каждый документ (node) созданный на сайте, получает на все время своего существования уникальный ID, ссылка на страницу для просмотра этого документа всегда будет оставаться неизменной, к какой-бы категории или типу этот документ не относился. Например перемещение обсуждения из одного форума в другой не приведет к изменению ссылки на это обсуждение.
Короткие URL (friendly URL's) - Drupal использует механизм mod_rewrite сервера Apache для получения эстетично выглядящих именований страниц сайта, позволяя избежать использования параметров в строке URL. Это также значительно улучшает отношение многих поисковых систем к сайту, поскольку не все поисковики любят возиться со страничками содержащими '?', '&' и прочие спецсимволы в строке URL.
Псевдонимы (URL aliasing) - можно присваивать альтернативные имена страницам, например чтобы дать им более запоминающиеся названия: www.mysite/node/view/31 -> www.site/about.
Управление версиями (revisions) - при изменении любого документа сайта может создаваться новая версия документа, при этом старые версии остаются доступными в базе и при необходимости можно откатиться к старым версиями документов.
Общественная модерация - может быть удобна для некоторых типов сайтов, например для сайтов различных сообществ, где в наполнении сайта материалами участвует большое количество пользователей. Такая модерация представляет собой механизм одобрения материалов сайта самими его посетителями (или отдельными их группами). Каждый материал имеет свой рейтинг и пользователи могут повышать его или понижать - в результате популярные и полезные документы могут быть опубликованы, перемещены на главную страницу сайта, вызывающие недовольство пользователей - удалены из списка опубликованных. Этот механизм можно настраивать для различных ролей пользователей.
Отслеживание обновлений (tracker) - все обновленные документы сайта или материалы к которым появились новые комментарии группируются на общей странице, ссылка на которой присутствует в меню пользователя. Особенно полезно для сайтов имеющих сложную структуру и большое количество разделов.
Поддержка
Свободное п/о (open source) - Drupal является свободным программным обеспечением, распространяемым под лицензией GNU GPL. Это означает, что используя Drupal вы получаете полные исходные тексты на которых он построен и можете вносить в них собственные изменения. Вы можете беспрепятственно использовать Drupal в коммерческих проектах, соблюдая условия лицензии GNU GPL, которой защищены исходные тексты Drupal.
Документация - документация поставляется вместе с Drupal и гораздо больше на сайте drupal.org (также drupal.ru), нет каких-либо аспектов реализации закрытых от пользователей, поскольку Drupal является свободным п/о. Впрочем, по этой же причине - документация по некоторым частям системы является не всегда полной, если вообще имеется. Побочный эффект открытых проектов - энтузиасты создают то, что им интересно, а написание документации далеко не всегда увлекательное занятие Пока что совсем мало документации на русском языке.
Поддержка сообщества - сильная сторона свободного п/о, поскольку пользователи и разработчики, для которых проект является в первую очередь увлекательным хобби, охотнее оказывают помощь, чем в коммерческих проектах, где вы как правило ограничены общением со службой поддержки. Учитывая, что Drupal и CMS вообще - развлечение людей в большинстве своем технически грамотных, техподдержка от сообщества энтузиастов-спецов зачастую эффективнее чем от пофигистичных коммерческих служб. Это конечно не абсолютное утверждение
Масштабируемость
Модульность - к небольшому ядру Drupal можно добавлять функциональность при помощи модулей. Существует большое количество готовых модулей для различных применений.
Кэширование страниц - страницы просмотренные пользователями кэшируются в базе и анонимные пользователи получают страницы из кэша, без повторной генерации каждого информационного блока отображаемого на странице. Это позволяет значительно снизить число запросов к базе данных и увеличить скорость отдачи страниц.
Многоплатформенность - Drupal поддерживает Apache и IIS, СУБД MySQL, PostgreSQL и MS SQL.
--------
В общем, система очень радует своей гибкостью, продуманностью и логикой организации.
Думаю, должна понравится всем, и начинающим разработчикам и продвинутым программерам (бо, есть хорошо документированный API). Маст хэв, короче :)
цитатка хорошая:
--------
All content management systems suck, Drupal just happens to suck less. -- Boris Mann at DrupalCON Amsterdam
--------
www.drupal.org - международный официальный сайт
www.drupal.ru - информация на русском языке