Последнее время часто приходится отвечать на вопросы а-ля «Если поставить Drupal станет ли лушче?», в большинстве случаев почемуто сравнивают с WordPress, хотя я бы в целом приплюсовал и другие движки (имеется ввиду для блогов). Итак, что же в нем лучше/хуже?
1. Модульная структура — большая часть системы вынесена в модули. Кстати модуль blog (ага!) вынесен в отдельный модуль и по умолчанию не активирован. Плюсы — практически все можно «кастомизировать» не особо заботясь о совместимости со следующей версией покрайней мере в случае с «текущей веткой» (это утверждение не совсем справедливо в случае с переходом с 4.7.х на 5.х — придется потрудиться). Самым существенным плюсом естественно является и то, что можно «прикрутить» практически все что душе угодно, вплоть до создания новых типов контента.
Минусы тоже присутствуют, например несколько большее количество модулей, чем в других движках (плагины). Это не то, чтобы совсем минус но не очень удобно.
Кстати для разработчиков — прекрасная документация, которую помимо чтения непосредственно на сайте, можно найти и в PDF (документация называется Drupal Handbook). В документации огромное количество примеров (snippets). Есть и перевод (не полный) на русский — ищем на drupal.ru.
2. Система поиска с индексацией. Очень и очень большой плюс. А с использованием модуля rustemmer — просто сказка (модуль реализует расширенную поддержку русского языка). Пользователям большинства блог-движков возможности настройки поиска даже не снились, а здесь — возможность указать вес факторов в выдаче, минимальную длину слова для индексации. Ну и соответственно работающий правильно поиск.
В этом пункте возникают и существенные минусы. Прежде все это необходимость запускать задания по времени (т.е. использовать cron) — не каждый блоггер (даже SA) сможет это сделать (могу ошибаться). Во-вторых использование дополнительных ресурсов в виде дискового пространства для индекса. В этом случае, правда надо учитывать и объем контента — если у вас всего 1000 заметок, то это еще не проблема, но когда их 1000 — тогда объем таблиц с индексом может быть довольно внушительным. В-третьих скорость индексации. Хотя этот параметр можно настроить (количество постов за 1 проход индексатора) — но вступают в действие такие факторы как ограничение на время работы скрипта. К примеру на аккаунте у MasterHost в некоторые особо загруженные дни у меня не получалось индексировать более 50 постов в час (ограничение по времени выполнения + крон не может выполняться чаще чем раз в час).
3. Словари. Вы можете определить столько словарей сколько вам необходимо. Надо 10 — будет 10, для разных нужд. В качестве примера — можно определить словарь для рубрик, словарь для тегов. В каждом словаре можно определить для какого типа контента он будет обязательным, будет ли словарь иерархическим, иметь связанные термины, иметь возможность назначать несколько или один термин из словаря. Так же вы можете настроить возможность свободного ввода термином (вместо выбора из списка) и обязательность выбора (ввода) терминов.
Честно говоря мне сложно найти минусы в таком подходе.
4. Локализация. Подход реализованный в Drupal использует базу данных (а не gettext). Отсюда и минусы — необходимость лезть в БД для того чтобы вывести локализованный вариант термина.
5. Темы. Подробно я разбирался только с созданием тем используя phptemplate. Но Drupal позволяет использовать и другие template engine. К примеру есть темы использующие smarty. Подход в разработке тем очень гибок. Здесь помимо api есть очень важный момент — возможность переписать под ваш дизайн вывод практически всех модулей. Это не просто «самопальный» поход в базу данных ( за данными которые выводятся к примеру template tags в WP), это именно возможность переделать вывод так как вам надо (это скажем так довольно простое описание процесса). Плюс этого подхода в том, что вы не полагаетесь на то, что разработчики плагинов (модулей) предсмотрели параметры before или after (иногда возможность «прикрутить» css), вы просто реализуете вывод сами, целиком контролируя процесс.
6. Пользователи. Реализован при помощи ролей (пользователи WP знают про что речь). НО. В отличии от WP роли используются очень широко, их легко редактировать (опять же в отличии от WP), добавлять и т.д. Кстати пользователю может быть назначено несколько ролей — как вам такая штука?
7. Красивые ссылки. Это действительно самый мощный инструмент в Drupal. Хотяте чтобы все записи в блоге имели определенную структуру ссылок, а «заметки» (другой тип контента) — другую? Пожалуйста. Хотите чтобы одна и таже запись была доступна по нескольким url? Пожалуйста.
Отмечу, что реализуется двумя модулями — path (в стандартной поставке) и pathauto (уст. дополнительно.
Все что здесь вам дает Drupal — практически это абсолютно полный контроль за системой ссылок (главное не потеряться! ).
Единственный минус который я здесь вижу — если вы вруг решите «спрыгнуть» с Drupal, то придется все это хозяйство как-то реализовать.
8. Теперь еще один минус — кеширование. Не совсем минус. Действительно очень серьезно увеличивает производительность. Но использует базу (и соответственно ваше дисковое пространство, если оно учитывается конечно), правда существуют модули для организации кеша в файловой системе. В отличие от того же WP — есть возможность указать «время жизни» (в стандартной установке).
Выводы. Однозначно очень интересная и мощная CMS. Именно CMS а не Personal Publishing Platform. Многих функций скорее всего мы никогда не дождемся ни в WordPress, ни в MovableType. Это в принципе понятня — разного поля ягоды.
Хотелось бы предостеречь от «повального» увлечения Drupal — система требует довольно серьезного изучения (это не страшилка, вся мощь Drupal — в знании того, как, зачем и почему. Без изучения документации воспользоваться этой мощью просто не реально.). И на мой взгляд гораздо проще создавать и вести блог именно на WordPress или MovableType (можно продолжить список), а Drupal использовать в более серьезных проектах.
P.S. Не судите строго — описать все подводные камни, проблемы и решения в случае с Drupal довольно сложно — это очень обширная тема. Но тема интересная.