В этой статье речь пойдет о системе Drupal. О ней слышали, наверное, все, кто хоть раз в жизни брался за создание динамического сайта. Название Drupal происходит от голландского слова druppel, что переводится как «капля». Мы обсудим эту CMS с позиции разработчика, практика, сделавшего Drupal своей главной и с некоторых пор единственной платформой для создания сайтов.
В свое время я перепробовал множество различных бесплатных CMS, но по ряду причин отказался от них. Начинал я с системы Wordpress, когда для одного из проектов понадобился корпоративный блог, а позже сделал с ее помощью еще несколько несложных сайтов (они, кстати, работают до сих пор). Но все же для серьезных проектов функциональности Wordpress не хватало. Блог-платформа осталась блог-платформой, хотя тема Wordpress как CMS и сохраняет актуальность среди почитателей этого инструмента.
На смену ей пришла Joomla, поразившая красотой интерфейса администратора и ужасающе неудобной внутренней организацией. Когда я совсем уж было отчаялся, то взялся за «монстра» TYPO3, подкупавшего огромным (несколько тысяч) количеством модулей расширения и популярностью среди западных разработчиков корпоративных систем. Но, увы, система предъявила столь высокий порог вхождения, что, подгоняемый необходимостью делать сайты быстро, а иногда и очень быстро, я был вынужден отложить и ее до лучших времен.
И вот настала очередь Drupal. Первое впечатление: голый, пустой, некрасивый. Действительно, после системы администрирования, предложенной Joomla, интерфейс Drupal в первое время совершенно не вдохновлял — ни тебе значков, ни красивых картинок, все минималистично и утилитарно. Лишь поработав с этой средой какое-то время, разработчик почувствует логичность и удобство ее интерфейса.
Базовый дистрибутив — это практически одно ядро с минимальным набором модулей. Опираясь только на него, можно создать разве что несложный блог или ленту новостей с дизайном из шаблона — даже Wordpress в базовой конфигурации предлагает бо′льшие функциональность и удобство.
Впрочем, в процессе освоения системы унылое настроение быстро сменилось состоянием почти перманентного восторга: чем глубже вникаешь в Drupal, тем больше он нравится. Конечно, по мере изучения системы выявлялись ее недостатки и находились способы их преодоления — иногда хватало собственного опыта, а иногда приходилось прибегать к помощи более опытных коллег.
Установка системы
Инсталляция Drupal проста настолько, насколько она вообще может быть проста для CMS: дистрибутив загружается с сайта drupal.org (главного сайта разработчиков системы), переписывается на сервер и распаковывается в нужное место. Потом запускается инсталлятор и вводятся имя заранее созданной базы данных и пароль доступа. На этом установка завершена. Затем система сразу же предлагает создать первую пользовательскую учетную запись и генерирует «безопасный» пароль из случайного набора символов. Впрочем, пароль можно задать и свой.
Чтобы получить серьезную функциональность, совершенно необходимы дополнительные модули, которые загружаются с того же drupal.org. Вообще, в дальнейшем этот сайт становится главным местом обитания разработчика. Есть и его русский аналог — drupal.ru, но основными источниками знаний остаются англо-язычные сайт и документация.
Установка модулей в принципе также не вызывает проблем: загружаем модуль, распаковываем его в соответствующий каталог и отмечаем галочкой необходимость включения его в систему. Однако если не знать заранее возможностей конкретного модуля, то сложно выбрать нужный из нескольких сотен доступных. Описания модулей на сайте не дают детального представления об их функциональности, поэтому остается два выхода: либо воспользоваться поддержкой сообщества — на форумах скорее всего найдется ответ, либо загрузить и установить все более или менее подходящие модули, выясняя их возможности методом проб и ошибок.
Существует более тысячи всевозможных модулей, охватывающих очень широкий круг задач — от решений для электронной коммерции до социальных проектов. Причем количество их непрерывно растет. Система сейчас находится на таком уровне развития, когда ей по силам создание практически любых корпоративных, социальных или новостных сайтов.
Основные понятия Drupal
В целом внутренняя структура модулей достаточно понятна, даже PHP-программист начального уровня довольно легко в ней разберется и научится адаптировать модули для своих целей. Модификация модулей в той или иной степени неизбежна, впрочем, как и в любой другой CMS, настраиваемой с учетом требований заказчика. Кстати, сборка системы «под заказ» — одна из особенностей среды Drupal, ничего похожего на какое-то «коробочное» решение в ней нет и в помине.
Drupal — система с динамической генерацией страниц. Их дизайн хранится в виде шаблонов, состоящих из каркаса, т.е. разметки на языке HTML, и вызовов функций и переменных, причем в рамках синтаксиса, основанного на PHP. В отдельных случаях в эти шаблоны просто дописывается PHP-код, обеспечивающий дополнительные возможности, необходимые здесь и сейчас. Такие готовые решения именуются в сообществе Drupal «PHP-сниппетами» и их либо пишут самостоятельно, либо — что бывает гораздо чаще — берут в готовом виде с сайта drupal.org.
В общем случае модуль генерирует фрагмент HTML-кода, который посредством соответствующего вызова вставляется в шаблон страницы. Чтобы изменить вид данного фрагмента, надо внести изменения в код самого модуля. Здесь проявляется один из недостатков системы — содержание не полностью отделено от представления: разметка вписана прямо в PHP-код. В подавляющем большинстве случаев этот недостаток преодолевается редактированием кода модулей, благо никаких юридических ограничений на сей счет не существует — Open Source есть Open Source. Такая особенность в определенной степени присуща всем системам с подобной внутренней организацией. Синтаксис вызовов базируется на стандартном синтаксисе PHP, он довольно прост, понятен (почти интуитивно понятен, как свидетельствует опыт автора) и хорошо документирован. HTML-верстальщику не придется запоминать какие-то специфические «заклинания», что зачастую требуется в некоторых веб-студиях со своими собственными закрытыми платформами, причем, как правило, коммерческими.
Сообщество Drupal и реализованные проекты
Грандиозная поддержка со стороны сообщества является одним из главных достоинств Drupal. Множество готовых рецептов в виде фрагментов кода имеются на форумах сайта drupal.org — нужно только суметь их правильно отыскать. Кстати, найти готовое решение нередко бывает гораздо проще и быстрее, чем писать самому. В общий доступ выкладываются только отлаженные, работоспособные модули, соответствующие стандартам сообщества. Ситуация, когда загруженный модуль вдруг отказывается устанавливаться и тем более работать, практически нереальна. И это один из плюсов Drupal — сообщество разработчиков довольно жестко придерживается продуманных стандартов.
В мире общее количество проектов, реализованных на базе Drupal, исчисляется уже десятками тысяч. В последнее время эта платформа стала популярна и у нас в стране. Ее возможности наиболее ярко иллюстрирует канадский новостной портал Nowpublic.com, представляющий собой сервис, где свободно публикуют новости, а также любые сообщения не профессиональные журналисты, а рядовые пользователи, причем без каких бы то ни было ограничений на предоставляемую информацию. Из российских сайтов на базе Drupal наиболее известен проект «Вебпланета».
Если сравнить Drupal с другими CMS с открытым кодом, ее можно поставить на один уровень с TYPO3. В большинстве случаев Drupal не только не уступает этой системе, но и превосходит ее, например при создании проектов Web 2.0. Кроме того, она предъявляет заметно меньшие системные требования и значительно более проста в освоении.
Системные требования и безопасность
В сообществе разработчиков в качестве стандарта принят безопасный стиль кодирования, а соответствующие рекомендации приведены в документации и на форумах. Крупных уязвимостей система не содержит, а мелкие сообщество оперативно устраняет. К примеру, такие попытки взлома, как SQL-инъекции и межсайтовый скриптинг, скорее всего, окажутся для злоумышленника безуспешными.
Системные требования позволяют размещать сайты, написанные на Drupal, на виртуальном хостинге, однако для крупномасштабного проекта все же необходим выделенный сервер. Drupal, несмотря на всю свою непритязательность, предъявляет определенные требования к системе, в частности к объему оперативной памяти и скорости процессора. Drupal может работать в паре как с веб-сервером Apache, так и c IIS. В качестве СУБД можно использовать MySQL, PostgreSQL или MS SQL.
Кстати, необязательно устанавливать эту платформу в среду Linux. Если использовать пакет «Денвер» (DNWR), то можно развернуть Drupal практически на любом компьютере с ОС Windows за пару минут, а вот в среде Linux придется немного повозиться, устанавливая Apache и MySQL. Название «Денвер» представляет собой акроним от выражения «джентльменский набор веб-разработчика». Ядро «Денвера» состоит из набора дистрибутивов таких основных программных инструментов, применяемых для разработки сайтов, как Apache, MySQL, PHP, phpMyAdmin и проч. Основная задача пакета «Денвер» — обеспечить разработку сайта на локальном компьютере без необходимости выходить в Интернет. Подробное описание, инструкции и дистрибутив находятся на сайте http://www.denwer.ru.ГЛАВНЫЕ особенности Drupal
Наиболее часто упоминаемая особенность среды Drupal — так называемая таксономия, по сути представляющая собой рубрикатор с неограниченным количеством уровней вложенности. Она весьма ценна, особенно если учесть то, что до настоящего времени еще сохранились даже платные коммерческие (!) CMS, имеющие ограничение по числу уровней вложенности рубрик. Такой механизм позволяет создавать неограниченное количество схем классификации контента в зависимости от его типа. А типы контента — еще один важный механизм Drupal, позволяющий администратору создавать различные схемы отображения страниц в зависимости от их назначения и содержания.
Разделение прав доступа реализовано посредством механизма ролей, как и в Wordpress. С помощью соответствующего модуля можно автоматически назначать определенную роль каждому новому зарегистрированному пользователю.
Очень удобный и в отдельных случаях незаменимый механизм — назначение псевдонимов (alias) для интернет-адресов документов. С его помощью можно замаскировать систему ссылок вида /node/123, применяемую по умолчанию, и заменить ее произвольной последовательностью символов, например catalog/posuda/chainik. Таким образом, безликая «конвейерная» система ссылок заменяется ссылками «человекопонятными», что позволяет организовывать развитую дублирующую навигацию.
Drupal предлагает достаточно возможностей и в плане поисковой оптимизации, ведь, в сущности, поисковая оптимизация на уровне кода сводится к правильной расстановке соответствующих тегов и генерации последовательностей ключевых слов. Система располагает довольно богатым арсеналом переменных в шаблонах для раздельного вывода заголовка текста, аннотации, тела текста, и т.д. Используя ключевые слова в заголовках и метатегах, можно размечать контент разными способами и таким образом удовлетворить потребности самого компетентного и взыскательного оптимизатора.
Механизм ускорения (throttle) позволяет на время пиковой нагрузки сервера отключать именно те модули, которые вызывают эту нагрузку. Тем самым можно не только оптимизировать работу сервера, но и воздвигнуть барьер DOS-атакам. Хотя, конечно, он будет иметь свои ограничения.
К недостаткам Drupal следует отнести упоминавшуюся выше проблему отделения кода от дизайна, а также проблему с совместимостью модулей «сверху вниз», скажем, при переходе с версии 5 на 6 модули приходится дополнительно адаптировать. Порог вхождения у данной среды также достаточно высок: начинающему будет непросто с ней разобраться, и потому, прежде чем браться за Drupal, ему следует потренироваться на чем-то попроще, например на Wordpress.
В целом у специалиста, имеющего опыт разработки динамических сайтов, владеющего HTML и основами PHP, освоение системы займет не меньше месяца. Еще одним подвод-ным камнем может оказаться слабая степень русификации как самой системы, так и документации к ней. Разработчику в любом случае придется иметь дело с английским языком, а поддержка сообщества без знания английского будет доступна только в сильно урезанном виде. Вот, пожалуй, и все. Достоинства системы — гибкость, мощность, быстрота, безопасность, расширяемость — заметно перевешивают ее недостатки. В целом же Drupal напоминает Linux — его проблемы и преимущества типичны для всего сообщества OpenSource.