Передовой опыт разработки на Drupal 8

22 сентября 2020 в 16:17

Вступление

Drupal 9 вышел 3 июня 2020 года. Значит ли это, что более ранние версии, а вместе с ними и наши советы, вмиг потеряли актуальность? Нет. Во-первых, стабильной работы от Drupal 9 стоит ждать только начиная с версии 9.1, чей выход назначен на декабрь 2020 года. Во-вторых, из всех проектов для Drupal 8 пока только 3 244 (примерно треть, но их число растёт) совместимы с Drupal 9. В третьих, поддержка Drupal 8 закончится в декабре 2021 года. И, наконец, в-четвёртых, в мире насчитывается чуть больше 300 тысяч сайтов, использующий тот или иной релиз Drupal 8, и вероятнее всего, их число пополнится, когда владельцы сайтов на Drupal 7 решатся на миграцию.

Дайте Drupal-сообществу довести новый релиз до ума, а пока улучшайте сайты на Drupal 8 — надеемся, описанный в статье опыт разработчиков ADCI Solutions вам в этом поможет.

Какие проблемы чаще всего испытывают сайты

Любой опытный веб-разработчик обязательно сталкивался с сайтами, страдавшими от одной или нескольких проблем:

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

Это происходит тогда, когда в процессе разработки сайта игнорируются передовые методы. Данная статья расскажет о самых распространенных проблемах и способах их решения. Мы специально не стали создавать отдельные списки для каждой проблемы, так как иногда один модуль способен решить сразу несколько.

Список нерекомендуемых модулей Drupal

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

  • Devel — этот модуль может помочь исправить проблемы в шаблонах Twig или сгенерировать контент-«рыбу», однако все эти возможности могут пригодиться только во время разработки;
  • UI-субмодули — такие субмодули, как Views UI, Field UI и т. д. должны быть отключены. Их нужно использовать на рабочем образце, после чего вы должны перенести все необходимые конфигурации.

В большинстве случаев эти модули вам тоже не понадобятся:

  • Color,
  • Dashboard,
  • Overlay,
  • Shortcut,
  • Toolbar.

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

Список рекомендуемых модулей Drupal

Мы настоятельно рекомендуем использовать следующие модули, которые помогут вам в решении множества проблем:

  • Update manager — очень полезный модуль, который будет информировать вас обо всех обновлениях безопасности как для ваших модулей, так и для ядра Drupal.
  • Advanced CSS/JS Aggregation — улучшает производительность фронтенда вашего сайта.
  • Backup and migrate — сохраняет копии вашего сайта на случай серьезных неполадок.
  • Elysia Cron — расширение для стандартного cron Drupal, дающее максимальный контроль над каждой задачей.
  • Redirect — позволяет администраторам добавлять 301-редиректы к устаревшим ссылкам.
  • Rabbit Hole — скрывает непубличные ноды.
  • Security Kit — уменьшает риски, связанные с уязвимостями веб-приложений.

Сделайте Drupal удобным для редакторов

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

  • Вы должны использовать ровно столько типов контента, сколько необходимо. Создав слишком много типов, вы увеличите время, необходимое на обслуживание сайта.
  • Отображайте только необходимые настройки и не заставляйте копаться в куче ненужных.
  • Дайте редакторам возможность изменять контент и разметку страниц. Никогда не храните контент внутри кода. Есть много модулей для управления разметкой (Panels, Display Suite, Paragraphs, Layout Suite, и т. д.). Пользуйтесь ими сами и дайте редакторам разрешение на их использование.
  • Простая навигация по сайту нужна не только пользователям, но и редакторам. Контекстные ссылки, навигационные цепочки, меню администратора — это далеко не полный список того, что облегчит их работу.
  • Старайтесь помнить главное правило: контент должен содержаться только в нодах. Не в таксономии и не в сущностях — они нужны для классификации, а не для хранения.
  • Оставьте работу с HTML-тэгами разработчикам. Редакторы должны работать с контентом. Именно поэтому вам необходимо установить CKEditor.
  • Работа с изображениями и другими медиафайлами тоже должна быть простой. Для этого вы можете использовать модули Entity Browser и Entity Embed (подробное руководство).

Заключение

Всё вышесказанное основано на многолетнем опыте разработки. Придерживаясь этого опыта, вы сумеете сэкономить время и избежать самых распространенных ошибок. Удачи!
Подписывайтесь на наш блог на Medium и следите за нами на Яндекс Дзене, ВКонтакте и в инстаграме.

Комментарии

Спасибо за статью, хотя возможно ее стоило назвать "Опыт разработки на Drupal 8 от ADCI Solutions"?
И прошу поправить списки - неправильно стоят переносы, видимо, при копировании случилось

22 сентября 2020 в 16:34

>Список нерекомендуемых модулей Drupal

Это наверно не "Нерекомендуемые", а модули, которые можно отключить, если у Вас проблемы с производительностью.
Ведь как известно, 7-ка вешает сервер, а 9-ка вешает ЦОД Smile

>Старайтесь помнить главное правило: контент должен содержаться только в нодах. Не в таксономии и не в сущностях — они нужны для классификации, а не для хранения.
Ага, потому в 7-ке в к термину таксономии можно добавить любые поля

На самом деле это ж удобно. например, словарь "автор" для статьи. По ссылке открываются все статьи автора (точнее статьи ,помеченные этим термином) и там же логично дать инфу про этого автора, а не городить еще один тип ноды и придумывать как его подключить (а подключить его наверняка можно) в этот вывод таксономии
для примера
https://www.entrepreneur.com/author/mike-swigunski

23 сентября 2020 в 13:34

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

23 сентября 2020 в 14:33

Color - ну допустим у человека 10 сайтов. На фронте они отличаются, а на беке не особо. Когда админ тема Бартик с включенным Color - оно как-то визуально понятнее, что правки на разных сайтах вносишь.

Update manager - его наоборот только на дев версии, а не на продакшене.

23 сентября 2020 в 22:24

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

24 сентября 2020 в 8:12

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

24 сентября 2020 в 11:59