Как стать автором
Обновить

Drupal, об опыте освоения

Добрый день,

CMS Drupal остается некоторой темной лошадкой в среде Web разработки, особенно в РФ. Часто можно встретить мнения, что это слишком сложная (по сравнению с прочими CMS, но не CMF) и медленная система.
Около года назад я решил создать собственный сайт-портал на Drupal. Я не программист, и не Web разработчик, скорее продвинутый пользователь. За плечами были пару сайтов на Joomla, немного общался с Wordpress. Сайт делал для себя, по профилю своего бизнеса. Поскольку я хотел сделать сайт с разнообразным функционалом, решил попробовать Drupal. На Joomla я просто не представлял, как это разнообразие можно сделать.
В итоге мне понравилось, и я хотел бы поделиться своими впечатлениями в виде коротких резюме по самым примечательным сторонам Drupal.

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

1. Версия Drupal.
Я использовал версию Drupal 7 сразу после его выхода в 2011 году. Это значит, что часть актуальных модулей еще не было до конца готовы. Однако на текущий момент точно можно сказать, что все основные модули уже имеют стабильные версии под D7.

Сейчас в сообществе активно идет работа по выпуску D8. По анонсам в D8 будет существенное изменение внутренней структуры, UI и функционала. В части API будет интегрированы отдельные части фреймворка Symphony (это новость, скорее для разработчиков).

2. Drupal — что это CMS (коробка для создания сайта) или CMF (фреймворк, конструктор для разработки сайта)
Drupal это некий переходной вариант между CMS и фреймворком.

Со стороны не программиста это выглядит следующим образом. Небольшое ядро с базовым функционалом и множеством модулей, расширяющих функционал в практически любый области применения. Для создания полноценного сайта приходится добавлять от 10 и более модулей (как минимум, views, и т.д.).
В сообществе идет постоянная дискуссия о стратегии развития — «большое ядро и немного добавлений» или «маленькое ядро и много добавлений». В D8 судя по всему будет очередной компромисс.

Могу утверждать, можно и нужно создавать качественные, функциональные сайты на Drupal без разработки собственного кода (PHP), модулей. Поэтому Drupal точно не фреймворк, как среда разработки. Все основные настройки находятся во вполне достойных формах и разделах административной среды. Более того, административная среда удачно интегрирована во front-end пользователя.

Однако, также могу утверждать, создателю сайта совершенно необходимо знать базовые основы PHP, SQL запросов. Поэтому Drupal это не совсем дружественная CMS с точки зрения процесса создания. Например, в темизации приходится разбираться с кусками PHP кода. Это не так сложно, но факт.

3. Сообщество Drupal и поддержка
Международное сообщество Drupal большое, прекрасное и дружелюбное.
Российское сообщество Drupal не большое, … дальше можете сами дополнить.
Поэтому знание английского просто необходимо.

Сообщество Drupal очень активно и вдохновенно двигается его изобретателем Dries Buytaert. Его компания (http://www.acquia.com) успешно, на мой взгляд, занимается продвижением своего детища, удачно привлекает инвестиции и проводит активный PR и маркетинг. При этом хорошо ощущается стратегия на правильную работу с сообществом, особенно важной для проектов open source (если кто не в курсе, Drupal — бесплатная система).

4. Установка и базовая настройка Drupal
Для тех, кто с нуля поднял Joomla или подобную CMS, проблем возникнуть не должно.
Запустить блог или сайт-визитку не сложно, хотя и несколько дольше чем на других CMS.
Требования к базовому программному стэку (Apache, MySQL, PHP) вполне обычные.
Дополнительные модули устанавливаются в два клика, однако потом приходится разбираться с дальнейшей их настройкой.

5. Быстройдействие Drupal
Мой проект совсем небольшой (надеюсь, пока), поэтому я на своей шкуре проблем с быстродействием не ощущал. Уверен, для создания подавляющего числа сайта с типовым функционалом особых проблем с быстродействием возникнуть также не должно.
По информации из сообщества, задача по оптимизации быстродействия Drupal на крупных проектах действительно актуальна и требует серьезной квалификации при настройке сайта (различные способы и настройки кэширования, дополнительные составляющие базового стэка и т.д.).
Опять же, заметно, что сообщество для каждой версии занимается вопросами быстройдействия.

6. Уникальные свойства и самые сильные стороны Drupal
Гибкая структура содержимого (любые типы-сущности), встроенная система справочников-каталогизаторов, встроенная система работы с комментариями. Все настраивается и наращивается.

Возможность собрать из тысячи кирпичиков (модулей) любой функционал. Без программирования!
Наличие универсального модуля Views для реализации представлений данных для пользователя в почти любых вариантов. Есть информация, что этот модуль будет включен в ядро D8.

Мультисайтовость. На одном проекте, инсталляции можно создавать несколько сайтов.
Наличие готовых сборок (distributions) для типового функционала. Например, есть сборки для магазинов, университетских порталов, интранет-порталов.

SEO – оптимизация. В Drupal как в ядре, так и дополнительных модулях имеются все возможности для SEO. Допускаю, что для большинства сайтов даже не потребуется привлечение дополнительных ресурсов на раскрутку, продвижение, если правильно использовать все возможности Drupal в этой области.
Поддержка мобильных платформ, responsible design (для темизации). Сообщество в последнее время делает существенных упор на поддержку мобильных платформ.

7. Минусы Drupal
Опять же на взгляд не профессионала-разработчика.

Для реализации даже достаточно тривиальной задачи иногда приходится искать и устанавливать по 2-3 дополнительных модулей. Например, в базовом ядре нет типа полей: дата, ссылка. Однако, в D7 появилось поле для изображений, прогресс идет.

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

Отсутствие обратной совместимости версий Drupal. Т.е. сайты под Drupal 6,7 придется трудоемко портировать под Drupal 8. Например, в D8 планируется новая система темизации, новое API.

8. Предлагаю следующий состав дополнительных (contributed) модулей, который на мой взгляд просто необходимы любому функциональному сайту на Drupal 7 (сортировка по приоритету):
• Chaos tools (скорее набор системных модулей, необходимых для функционирования прочих модулей)
• Views (для выбора, представления данных в таблицах, блоках, rss и т.д.)
• Link, Noder Reference, Date (несколько модулей для типов полей)
• Token (использование адресов-токенов для поставления в поля)
• Mollom (капча защита)
• Global Redirect, Pathauto (SEO-корректное и понятное формирование адресов)
• XML Sitemap (создание sitemap.xml для поисковых роботов)
• Sitemap (создание пользовательской карты сайта)
• Meta Tags (создание Meta Tags для SEO)
• IMCE, IMCE Wysiwyg API bridge (редактирование текста, загрузка картинок)
• Location, GMap (для работы с гео-локацией, Google Map)
И еще сотни других модулей от сообщества.

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

Drupal вполне можно использовать и для типовых функционалов: магазины, визитки, блоги. Однако, затраты (время, деньги) могут быть несколько выше.

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

Для Drupal требуется время для разгона, однако дальше становится все интереснее…

На свое проекте я веду блог по настройке, использованию Drupal по своим достижениям (и ошибкам). Готов сообщить дополнительное инфо через личные сообщения.
Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.