Чесний і перевірений боями список для новачків (і не дуже новачків) у Drupal у 2025 році. Ці уроки заощадили б мені сотні годин болю.
Більшість людей ставляться до Drupal як до WordPress. Це найшвидший спосіб його зненавидіти.
Я це робив у 2012 році. Мені досі сняться кошмари.
/core чи /modules/contrib і хочете щось змінити — негайно закрийте редактор. Використовуйте патч, хук, плагін або власний модуль.
# Експорт
drush config:export
# Імпорт на іншому середовищі
drush config:import
# Показати різницю
drush config:status
Робити це з самого початку врятує вас від класичного «у мене на компі працює».
Погано (те, що робить більшість новачків):
composer create-project drupal/recommended-project
Добре (те, що треба робити):
composer create-project drupal/recommended-project my-site --no-interaction
cd my-site
composer require drupal/ctools drupal/token drupal/pathauto
Більше ніколи не завантажуйте модулі з drupal.org у вигляді zip-архівів.
Перестаньте думати, що все має бути «вузлом» (node). Використовуйте кастомні сутності, коли це доречно.
| Можливість | Paragraphs | Layout Builder | Custom Blocks |
|---|---|---|---|
| Повторне використання | Так | Ні (на конкретному об’єкті) | Так |
| Свобода макету на сторінці | Ні | Так | Обмежено |
| Швидкість | Середня | Нижча | Найкраща |
| Досвід редактора | Дуже добрий | Відмінний | Базовий |
Моє правило у 2025 році: Paragraphs — для повторно використовуваних компонентів, Layout Builder — лише коли клієнт вимагає повної свободи на кожній сторінці (і ви готові до агресивного кешування).
Якщо сторінка повільна і ви не використовуєте теги кешу — ви робите щось не так.
$build = [
'#markup' => $text,
'#cache' => [
'tags' => ['node:123'],
'contexts' => ['url'],
'max-age' => Cache::PERMANENT,
],
];
return $build;
# Очистити кеш
drush cr
# Оновити БД після змін коду
drush updatedb -y
# Увімкнути модуль
drush en module_name -y
Встановлюйте Admin Toolbar на кожен сайт. Він перетворює стандартне адмін-меню з жахливого на терпиме.
Погано (стиль Drupal 7):
= $some_variable; ?>
Добре:
{{ some_variable }}
Також вивчіть without, filter, модуль Twig Tweak і команду drush twig:debug.
Views дуже потужний, але іноді простий EntityQuery або кастомний контролер швидший і чистіший.
У кожному кастомному модулі та класі:
declare(strict_types=1);
Drupal 10+ чудово працює з PHP 8.2+, атрибутами, enum та readonly-класами.
Drupal не складний. Він просто інший. Як тільки ви приймете його філософію (сутності, dependency injection, управління конфігурацією, хуки/плагіни/сервіси), він стає однією з найпотужніших і найгнучкіших систем у світі.
Написано розробником Drupal, який обпікся на кожній з перелічених помилок — щоб ви не повторювали їх.