Плюсы и минусы Drupal

В своём Телеграм канале я пишу про сайты, ИИ и программированиеhttps://t.me/webmasta_ru - подписывайся!

Автор: webmasta | Опубликовано:
Обновлено:
Плюсы и минусы Drupal

С Drupal я работаю где-то с 2009 года, начинал с 6-й версии, а на момент написания статьи последняя уже 11-я. Поэтому повидал уже много чего и этот материал написан исключительно исходя из личного опыта.

Преимущества

Плюсов у Drupal предостаточно:

  1. Бесплатная система управления с возможностями в разы превосходящими платные аналоги.

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

  3. Модульность: огромное количество расширений на любой вкус.

  4. Огромное количество функций, доступных “из коробки”: админка, ЧПУ, кэширование, сущности, поля, регистрация пользователей, контроль доступа, комментарии, форма обратной связи, меню, поиск, статистика, системный лог, мультиязычность и многое другое.

  5. Сущности, поля, таксономия и гибкая система отображения этого всего позволяют гибко настраивать сайт под большинство задач.

  6. Views - они же “Представления” - мощный UI конструктор списков и выборок без необходимости изучать SQL синтаксис.

  7. Блочная система - шаблон поделён на регионы, в каждом из которых можно выводить блоки контента в зависимости от различных условий: адрес страницы, роль пользователя, язык и тд.

  8. Обработка изображений - можно "на лету" обрезать и/или масштабировать изображения для создания разных вариантов для превью в списках, полного просмотра и любых других ситуаций.

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

  10. Неограниченное количество ролей пользователей и мощная система контроля доступа - можно настраивать разрешения для всего.

  11. Twig для рендеринга - популярная и мощная система шаблонизации. В целом вся темизация-шаблонизация в друпале достаточно мощная, можно изменить каждую мелочь на сайте.

  12. Composer позволяет легко управлять пакетами и обновлением системы.

  13. Symfony компоненты под капотом (начиная с 8-й версии). Делает разработку очень гибкой, а функционал расширяемым не только за счет модулей.

  14. API-first подход. Доступны апишки на любой вкус и цвет для более простой и гибкой разработки, а так же создания headless решений: Entity API, Form API, DB API, Batch API, Queue API, Cache API, Filter API и другие - https://www.drupal.org/docs/develop/drupal-apis

  15. Система хуков (от англ hook - крюк), позволяющая переопределять огромное количество функций, как модулей, так и ядра. Простым языком хуки - это обычные PHP функции, названные по специальному шаблону, которые автоматом цепляет движок сайта и в зависимости от реализации или дополняет или полностью переопределяет какой-то функционал. Таким образом то, что нельзя настроить "мышкой", можно добить через хуки.

  16. Импорт/экспорт конфигурации сайта позволяет деплоить на прод с минимумом телодвижений, как вручную, так например и через Deployer.

  17. При грамотной настройке Drupal - весьма шустрая система управления.

  18. Огромное и дружелюбное сообщество разработчиков, у которых можно спросить совет.

  19. Вытекающий из предыдущего плюс - баги фиксятся быстро, но чаще это касается ядра. Кастомные модули - зона ответственности их авторов, но и для этих случаев народ пилит патчи, которые можно использовать до обновления модуля его создателем.

  20. Открытый исходный код.

Неопределенные моменты

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

  1. Частые обновления ядра. С одной стороны это плюс, так как ведётся постоянная работа с уязвимостями, а с другой стороны большинство Drupal сайтов до сих пор работают на 7-й версии, которая вышла в 2011 году.

    статистика использования версий ядра drupal

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

    Например, один из моих сайтов на 9-й версии уже устарел и ругается, что пора бы обновиться. Он отлично работает, приносит какой-то трафик, но при попытке обновления возникают ошибки с модулями и шаблоном, разбираться в которых мне лень, так как простого решения там нет (замены одного из ключевых модулей еще нет, обновится он возможно никогда), а проделанная работа не будет стоить потраченного на неё времнни.

    Переход с 7 на 8 версию, где произошла смена парадигмы Друпала - это вообще забей. Что многие разработчики и сделали, что и подтверждает график выше. Там проще не переехать, а создать сайт с нуля на 8+ версии.

  2. Большое количество модулей. Да, это определенно плюс, дарарит большие возможности для расширения функционала. Но с каждой новой версией ядра модулей, которые забросили, становится всё больше.

    Второй момент - бывает модуль делает настолько ничтожную вещь, стреляя из пушки по воробью, что проще было бы обойтись вообще без него, перенеся все мелочи в один "мега" кастомный модуль либо вообще в шаблон. Часто встречающаяся болезнь друпалистов, особенно начинающих - бездумная установка огромного количества модулей, что приводит к тормозам и прочим непредвиденным последствиям, например несовместимости разных модулей.

    И третье - модули часто представляют из себя глючное недоразумение. Порой бывает нужно перепробовать пачку модулей, прежде чем найти рабочее решение. Либо написать самому с нуля. Так что вся эта масса из более чем 50 тысяч модулей на официальном сайте - просто пыль в глаза. Реалии таковы, что большинство из них не поддерживаются либо не протестированы должным образом.

Недостатки

  1. Самый главный минус Drupal - это сплошной overhead. Чрезмерное усложнение всего и вся. Это относится, как к бэку, так и к пользовательскому интерфейсу.

    Необоснованные запросы, сложная структура БД и сущностей, Views не всегда оптимизированы, все формы выглядят страшно, все эти хуки, переопределения и прочая билиберда.

    В движке многое сделано в угоду универсальности и да, всё можно настроить и поменять под себя, но для этого скорее всего придётся писать дополнительный код, а это занимает время не только на реализацию, но и на банальное осознание, как это всё сделать.

    Иногда быстрей и, уж точно чище и понятней, что-то написать с на голом Symfony, чем разбираться во всех этих тонкостях Drupal.

    Чтобы было наглядней, ниже пример программного изменения мета title и description для кастомной страницы:

    /**
     * Implements hook_preprocess_html() for html templates.
     */
    function mythemename_preprocess_html(array &$variables) {
      // Add META tag title + description for Basic Page node fields.
      // This assumes the 'body' field is present and populated.
      // Load the node entity from current route.
      $node = \Drupal::routeMatch()->getParameter('node');
      if ($node) {
        // Check if node type is basic page.
        if ($node->getType() === 'page') {
          $variables['page']['#attached']['html_head'][] = [
            [
              '#tag' => 'meta',
              '#attributes' => [
                'name' => 'title',
                'content' => $node->get('title')->value,
              ],
            ],
            'title',
          ];
          $variables['page']['#attached']['html_head'][] = [
            [
              '#tag' => 'meta',
              '#attributes' => [
                'name' => 'description',
                // Get 160 characters from Body field, strip tags
                'content' => strip_tags(substr($node->get('body')->value, 0, 160)) . '...',
              ],
            ],
            'description',
          ];
        }
      }
    }


    Ну ведь жесть!

    И так в друпале повсюду. Что-то интуитивно понять тут просто невозможно, надо лезть в API, гуглить или обращаться за помощью на форумы или чаты (где не факт, что ответят и точно не сразу) или к ИИ.

  2. Совсем не коробочное решение. Поставил и забыл - это не про Drupal. В любом случае будет нужна настройка и глубокое понимание что и как работает. В зависимости от возможностей выбранного шаблона и установленных модулей можно в целом и мышкой “натыкать”, как в конструкторе собрать нужный сайт, но большое количество модулей еще сильнее усложняет и без того сложную систему.

  3. Шаблон скорее всего потребует доработок, так как в стандартном виде почти все они выглядят убого и напихано много лишнего. Либо наоборот слишком минималистично. Но это, наверное, особенность любой CMS.

  4. Шаблонизация хоть и мощная, но требует определенных навыков и знаний. Например, нужно знать правильный нейминг файлов шаблона. В этом помогает дебаг режим твига, который предложит вариации нейминга, чтобы друпал подхватил эти файлы автоматически. Но частенько этих вариаций не хватает и нужно опять прибегать к помощи хуков, чтобы пробросить так называемые "theme suggestions" и темизировать какую-то мелочь. Совсем не прямолинейный процесс. Готовьтесь к тому, что ради изменения какой-то кнопочки придётся играть в дичайшую многоходовочку.

  5. Уже ставшая мемом кривая обучения Drupal. Сначала ничего не понятно, а потом не понятно еще больше.

    кривая обучения drupal

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

  7. Необходимо знание английского. Для меня это не проблема, но имейте ввиду, что 90% сообщества общается на английском и вся документация написана на нём же. Да, есть переводы, но они создаются не синхронно.

  8. Блокирующие баги, особенно на фазе активной разработки и при использовании контрибных модулей, на которые уходит тонна времени, даже не на исправление (часто решение простое), а банально на понимание, что тут вообще происходит.

  9. Популярность не очень. От сухих цифр никуда не убежишь.

По данным CMSmagazine.ru:

  • Wordpress занимает 2-е место: 9936 проектов и 823 партнёров.
  • Drupal на 7 месте: 3113 проектов и 157 партнёров.

По данным компании iTrack, проанализировавшей 5 465 652 доменов зоны RU:

  • Wordpress занимает 42,87% рынка и находится на первом месте среди бесплатных систем управления.

  • Drupal - 1,75% (около 96 тысяч сайтов) и находится так же на 7 месте.

Данные по Wordstat, статистика запросов в Яндексе на декабрь-январь 2025:

  • "wordpress" - 145 200 запросов,
  • "drupal" - 10 453 запросов.

По данным Google trends, за последний год запрос "drupal" занимает всего 2-6% по сравнению с объемами поиска "wordpress":

сравнение поисковых запросов wordpress и drupal

Популярность не является прямым недостатком, но это своего рода голоса пользователей за какую-то систему. Хотя у друпала из-за своей сложности здесь никогда не было шансов.

Для каких сайтов подходит Drupal, а для каких нет

Drupal идеально подходит для создания:

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

Не подходит для:

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

Аудитория владельцев сайтов на друпал - это:

  • веб разработчики,
  • крупные компании и корпорации,
  • государственные структуры,
  • образовательные учереждения,
  • команды с большим штатом редакторов и авторов, которым нужна гибкость прав доступа и удобное управление стадиями публикации контента.

Заключение

Drupal - это мощная, но сложная система управления сайтом с высоким порогом входа. Она создана для технарей, а не для “домохозяек”. Если Вы хотя бы базово не знакомы с PHP и Twig и собираетесь создавать сайт сами - в друпал лучше не лезть.

Но даже если Вы веб-программист, то с нуля самому разобраться во всём в Друпале точно не выйдет и я всем советую посмотреть какой-нибудь курс молодого бойца, прежде чем начать работать.

Огромное количество плюсов, большое и активное сообщество, а так же совеременные ИИ-помощники (которые заменят часы гуглежа) в целом перекрывают большинство минусов этой системы.

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

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

Drupal я использую в основном для контентных сайтов.

Добавить комментарий

Ограниченный HTML

  • Допустимые HTML-теги: <a href> <b> <i>
  • Строки и абзацы переносятся автоматически.
  • Адреса веб-страниц и email-адреса преобразовываются в ссылки автоматически.

Об авторе: меня зовут Иван, в сайтах с 2006 года, я программист и SEO'шник. Помимо этого сайта недавно начал вести Телеграм канал, в котором публикую свои мысли, планы, результаты опытов и прочую, иногда даже годную ерунду про сайты, ИИ и программирование - https://t.me/webmasta_ru - подписывайся!