Bezkompromisowa, sprawdzona w boju lista dla początkujących i średniozaawansowanych developerów Drupal w 2025 roku. Te lekcje oszczędziłyby mi setek godzin bólu.
Większość ludzi traktuje Drupal jak WordPress. To najszybsza droga, by go znienawidzić.
Robiłem to w 2012 roku. Do dziś mam koszmary.
/core lub /modules/contrib i chcesz coś zmienić – natychmiast zamknij edytor. Użyj patcha, hooka, pluginu lub własnego modułu.
# Eksport
drush config:export
# Import na innym środowisku
drush config:import
# Sprawdź różnice
drush config:status
Robienie tego od początku uratuje cię przed klasycznym „u mnie działa”.
Źle (co robi większość początkujących):
composer create-project drupal/recommended-project
Dobrze (co naprawdę powinieneś robić):
composer create-project drupal/recommended-project my-site --no-interaction
cd my-site
composer require drupal/ctools drupal/token drupal/pathauto
Nigdy więcej nie pobieraj modułów z drupal.org jako ZIP.
Przestań myśleć, że wszystko musi być „node”. Używaj własnych encji, gdy ma to sens.
| Możliwość | Paragraphs | Layout Builder | Custom Blocks |
|---|---|---|---|
| Wielokrotne użycie | Tak | Nie (tylko na danym obiekcie) | Tak |
| Swoboda układu na stronie | Nie | Tak | Ograniczona |
| Wydajność | Średnia | Niższa | Najlepsza |
| Doświadczenie redaktora | Bardzo dobre | Świetne | Podstawowe |
Moja zasada w 2025: Paragraphs – do komponentów wielokrotnego użytku, Layout Builder – tylko gdy klient wymaga pełnej wolności na każdej stronie (i masz agresywne cache’owanie).
Jeśli strona jest wolna, a ty nie używasz tagów cache – robisz coś źle.
$build = [
'#markup' => $text,
'#cache' => [
'tags' => ['node:123'],
'contexts' => ['url'],
'max-age' => Cache::PERMANENT,
],
];
return $build;
# Czyść cache
drush cr
# Aktualizuj bazę po zmianach kodu
drush updatedb -y
# Włącz moduł
drush en nazwa_modułu -y
Zainstaluj Admin Toolbar na każdej stronie. Zamienia domyślne menu administracyjne z koszmarnego w znośne.
Źle (styl Drupal 7):
Dobrze:
{{ some_variable }}
Naucz się też without, filter, modułu Twig Tweak oraz komendy drush twig:debug.
Views jest potężne, ale czasem prosty EntityQuery lub własny kontroler jest szybszy i czystszy.
W każdym własnym module i klasie:
declare(strict_types=1);
Drupal 10+ działa rewelacyjnie z atrybutami, enumami i readonly class na PHP 8.2+.
Drupal nie jest trudny. Jest po prostu inny. Gdy raz zaakceptujesz jego filozofię (encje, dependency injection, zarządzanie konfiguracją, hooki/pluginy/serwisy), staje się jedną z najpotężniejszych i najbardziej elastycznych platform na świecie.
Napisane przez developera Drupala, który sparzył się na każdej z powyższych błędów – żebyś Ty nie musiał.