Wdrażając Drupala od zera, zawsze pojawia się kwestia początkowej konfiguracji środowiska. Wówczas zaczynamy szukać w pamięci, jakie moduły będą nam potrzebne, będą przydatne lub ułatwią pracę, a których nie ma domyślnie zainstalowanych w naszym CMS-ie.
Doświadczenie pokazuje, że pomocne byłoby zebranie w jednym dokumencie modułów, które warto zainstalować na starcie albo chociaż przemyśleć możliwość ich użycia. Zarządzając już istniejącą instancją, warto wiedzieć, jakie dodatkowe moduły mogą ją wzbogacić. Opis oprę na modułach zgodnych z wersjami Drupala 10 i 11.
Kierować się tu będę również doświadczeniem, zwracając uwagę na funkcjonalności, które często były wymagane lub pojawiały się jako dobre praktyki.
Wszystkie moduły można zainstalować z poprzez Composer (composer require drupal/[nazwa modułu], a na stronach projektów znajdują się komendy instalacyjne dla najnowszych dostępnych wersji.
To zestawienie może też służyć jako ścieżka rozwoju: opanowanie wymienionych modułów pozwoli szybko i sprawnie wdrażać rozwiązania u klienta.
Podzieliłem moduły na kilka kategorii, ze względu na ich zastosowanie:
- Konfiguracja.
- Kontent.
- Bezpieczeństwo.
Do każdego modułu dodam też informację oceniającą jej przydatność w kontekście większych projektów. Większość dużych projektów Dupalowych nie obędzie się bez niektórych funkcjonalności, więc trzeba je potraktować jako “must have” i dobrze byłoby je dobrze poznać.
Postaram się również umieścić przydane linki, w których będzie wyjaśniona funkcjonalność oraz, jeśli to możliwe, jakieś “use cases”.
Konfiguracja
Przedstawiam tu moduły użyteczne w kontekście zarządzania i utrzymywania konfiguracji Drupala. Są one wygodne, a nawet niezbędne przy dużych, wielośrodowiskowych wdrożeniach (tam, gdzie mamy środowiska testowe, produkcyjne etc.).
Config Split
- Projekt: https://www.drupal.org/project/config_split
- Ocena przydatności: zawsze
Moduł ten pozwala na posiadanie konfiguracji skrojonej dla danego środowiska – developerskiego, testowego, produkcyjnego, etc. Można dzięki niemu stworzyć wiele konfiguracji, które będą uruchamiane na zasadach, jakie sobie określimy w plikach konfiguracyjnych dla danego środowiska.
Najbardziej podstawowe użycie to dodanie do pliku settings.php listy aktywnych/nieaktywnych konfiguracji w zależności od wartości zmiennej środowiskowej, gdzie w kluczu:
config_split.config_split.{split_key},
{split_key} jest identyfikatorem środowiska skonfigurowanym w /admin/config/development/configuration/config-split.
Przykład:
if ('production' === $_ENV['ENVIRONMENT']) {
$config['config_split.config_split.prod']['status'] = TRUE;
$config['config_split.config_split.dev']['status'] = FALSE;
} else {
$config['config_split.config_split.prod']['status'] = FALSE;
$config['config_split.config_split.dev']['status'] = TRUE;
}
- Ścieżka do konfiguracji modułu: /admin/config/development/configuration/config-split
Config Ignore
- Projekt: https://www.drupal.org/project/config_ignore
- Ocena przydatności: bardzo często
W podstawowej funkcjonalności moduł umożliwia ignorowanie całych plików konfiguracyjnych lub tylko konkretnych pól podczas ich importowania, zapewniając tym samym, iż konfiguracja przechowywana w bazie danych w trakcie importu się nie zmieni, co jest czasami przydatne, gdy np. nie chcemy przechowywać w pliku konfiguracyjnym hasła do jakiegoś systemu, które jest już ustawione na serwerze produkcyjnym.
Najnowsza wersja wprowadziła dodatkowe tryby: Intermediate i Advanced, które pozwalają odpowiednio filtrować przy Importach i Exportach oraz filtrować dla konkretnych operacji Create, Update lub Delete.
- Ścieżka do konfiguracji modułu: /admin/config/development/configuration/ignore
Config Readonly
- Projekt: https://www.drupal.org/project/config_readonly
- Ocena przydatności: w zależności od potrzeb
Moduł pozwala zablokować możliwość dokonywania jakichkolwiek zmian w konfiguracji witryny poprzez proste ustawienie $settings[’config_readonly’] = TRUE;, które można uzależnić od określonych przez programistę warunków, np. uniemożliwić jakiekolwiek zmiany na środowisku produkcyjnym.
Treść
Przedstawię tu listę modułów, które ułatwią pracę z Drupalem, zwiększą jego funkcjonalność, a także estetykę pracy.
Paragraphs
- Projekt: https://www.drupal.org/project/paragraphs
- Ocena przydatności: zawsze
Paragraphs umożliwia tworzenie treści w sposób, który pozwala rozdzielić zawartość na niezależne, predefiniowane typy paragrafów, które mogą być dowolną strukturą zbudowaną z tekstu i multimediów. Dzięki temu użytkownik może je dodawać i układać w dowolnej kolejności, bez konieczności korzystania z jednego dużego pola. Rozwiązanie to ułatwia utrzymanie czystości kodu i zapewnia większą elastyczność w zarządzaniu wyglądem każdej sekcji. Jest to praktycznie must have w każdym projekcie. Ułatwia organizowanie typów treści w sekcje, które można dowolnie dodawać i obsługiwać frontendowo.
W ramach paragraphs dostępny jest również moduł Paragraphs Library, który umożliwia reużywalność utworzonych wcześniej dokumentów w ramach paragrafu w innych dokumentach.
- Ścieżka do konfiguracji paragraphs: /admin/structure/paragraphs_type
- Ścieżka do konfiguracji paragraphs library: /admin/config/content/paragraphs_library_item
- Dodatkowe linki: https://www.youtube.com/watch?v=0gboYyLtTQk
Entity Usage
- Projekt: https://www.drupal.org/project/entity_usage
- Ocena przydatności: w zależności od potrzeb
Moduł ten umożliwia śledzenia relacji między encjami. W skrócie: można zweryfikować co i gdzie jest używane. Używać z rozwagą, gdyż znacząco obciąża system przy dużych stronach.
- Dodatkowe linki:
Entity Browser
- Projekt: https://www.drupal.org/project/entity_browser
- Ocena przydatności: bardzo często
Moduł ten umożliwia tworzenie elastycznych i rozbudowanych interfejsów do wyszukiwania oraz wyboru różnych encji w Drupalu (np. treści, plików, obrazów, mediów). Zamiast prostego pola wyboru, pozwala zdefiniować bardziej zaawansowane sposoby przeglądania, filtrowania i podglądu encji, m.in. w postaci widoków czy okien modalnych. Użytkownicy mogą łatwiej wyszukiwać, sortować i wybierać obiekty, a sam interfejs można dostosować do potrzeb projektu, definiując na przykład pola wyszukiwania, kolejność wyświetlanych wyników czy układ listy dostępnych encji.
Istnieje możliwość zindywidualizowania wyglądu tego widgetu, a także użycia widoków określających, jakie pliki mają być w nim dostępne.
- Ścieżki do konfiguracji: /admin/config/content/entity_browser
- Dodatkowe linki:
Redirect
- Projekt: https://www.drupal.org/project/redirect
- Ocena przydatności: zawsze
Udostępnia mechanizm przekierowań z dowolnej ścieżki do konkretnego dokumentu Dupala jednocześnie, możemy ustawić odpowiedni status dla przekierowania (od 300 to 307 patrz: https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status)
- Ścieżka do konfiguracji: /admin/config/search/redirect
Media
- Projekt: https://www.drupal.org/docs/8/core/modules/media
- Ocena przydatności: bardzo często
Moduł jest już dodany w Drupal 11, ale nie jest zainstalowany.
Wprowadza mechanizm, który pozwala na tworzenie i zarządzenie różnymi typami multimediów: Audio, Document, Image, Remote video oraz Video. Każdy z typów mediów może mieć przypisane własne pola i konfiguracje wyświetlania, co pozwala na elastyczne dostosowanie do potrzeb witryny. Można tworzyć w dokumencie pola, które będą akceptować tylko konkretny, zdefiniowany typ mediów.
- Ścieżki do konfiguracji: /admin/structure/media oraz /admin/config/media/media-settings
- Dodatkowe linki: https://www.youtube.com/watch?v=2x21f2MnQ8E
Media library
- Projekt: https://www.drupal.org/project/media_library
- Ocena przydatności: bardzo często
Wygodny w użyciu, zaawansowany widget rozszerzający możliwości modułu Media, oferujący intuicyjny interfejs do zarządzania zasobami multimedialnymi. Dzięki integracji z edytorem CKEditor5 pozwala na bezpośrednie osadzenie multimediów w treści.
Aby widget był dostępny w CKEditor5, należy dodać go ręcznie do konfiguracji wybranego edytora /admin/config/content/formats, a reprezentowany jest jako button Drupal Media

- Dodatkowe linki:
Media entity browser
- Projekt: https://www.drupal.org/project/media_entity_browser
- Ocena przydatności: w zależności od potrzeb
Jeśli chcemy, aby użytkownik miał wygodne narzędzie do zarządzania plikami, ten moduł jest obowiązkowy. Media Entity Browser jest modułem scalającym zalety Entity Browser z modułem Media Drupala.
Istnieje możliwość zindywidualizowania wyglądu tego widgetu, a także użycia widoków określających, jakie media mają być w nim dostępne.
Trzeba jednak być tutaj trochę ostrożnym, gdyż wymagana zależność inline_entity_form (https://www.drupal.org/project/inline_entity_form.) jest aktualnie w wersji RC, więc najlepiej przetestować funkcjonalność przed wrzuceniem na produkcję.

- Ścieżki do konfiguracji: /admin/config/content/entity_browser
Trash
- Projekt: https://www.drupal.org/project/trash
- Ocena przydatności: w zależności od potrzeb
Świetny moduł zabezpieczający dokumenty przed przypadkowym skasowaniem dodający mechanizm Trash bin.
Istnieje możliwość wybrania typu encji, jaki ma być obsługiwany przez moduł oraz automatyczne czyszczenie kosza po upływie wskazanego czasu.
- Ścieżki do konfiguracji: /admin/config/content/trash
- Dodatkowe linki:
Dropzonejs
- Projekt: https://www.drupal.org/project/dropzonejs
- Ocena przydatności: w zależności od potrzeb
Moduł ten dostarcza funkcjonalność zapewnianą przez bibliotekę DropzoneJS, dzięki której można uploadować pliki, używając mechanizmu drag’n’drop.
Jest świetnym rozwiązaniem, gdy użyjemy go razem z Media entity browser.
Instalacja modułu wymaga dodanie do pliku composer.js wpisu dla klucza repositories
"repositories": [
{
"type": "package",
"package": {
"name": "enyo/dropzone",
"version": "5.9.3",
"type": "drupal-library",
"dist": {
"url": "https://github.com/dropzone/dropzone/releases/download/v5.9.3/dist.zip",
"type": "zip"
}
}
}
]
i uruchomienie komendy: composer require drupal/dropzonejs enyo/dropzone

- Ścieżka do konfiguracji: Niczego nie trzeba konfigurować.
- Dodatkowe linki:
Pathauto
- Projekt: https://www.drupal.org/project/pathauto
- Ocena przydatności: zawsze
Moduł, który pozwala na zautomatyzowane tworzenie aliasów adresów url do dowolnego typu treści. Dla wybranego typu encji i języka można skonfigurować własny schemat ścieżki.
- Ścieżki do konfiguracji: /admin/config/search/path/patterns
- Dodatkowe linki: https://www.youtube.com/watch?v=Pi5CweTmF5Q
Bezpieczeństwo
Przedstawiam najbardziej przydatne i najczęściej wykorzystywane moduły, które zwiększają bezpieczeństwo witryny i każdy “drupalowiec” powinien je poznać.
Rename Admin Paths
- Projekt: https://www.drupal.org/project/rename_admin_paths
- Ocena przydatności: zawsze
Prosty, a zarazem użyteczny moduł zwiększający bezpieczeństwo witryny poprzez zmianę domyślnych ścieżek administracyjnych, takich jak /admin oraz /user, na niestandardowe, co utrudnia potencjalnym atakującym dostęp do panelu zarządzania.

- Ścieżka do konfiguracji: /backend/config/system/rename-admin-paths
Password Policy
- Projekt: https://www.drupal.org/project/password_policy
- Ocena przydatności: w zależności od potrzeb
Moduł pozwala stworzyć politykę haseł dla wybranych ról. Poprzez doinstalowanie dostarczonych wraz z modułem Policy Constraints istnieje możliwość określenia m.in.:
- password_policy_blacklist – lista ciągów, które nie mogą być użyte jako hasła lub też hasła nie mogą ich zawierać.
- password_policy_character_types – minimalna liczba typów znaków (2,3 lub 4) spośród lowercase letters, uppercase letters, digits, special characters.
- password_policy_characters – określa minimalną wymaganą ilość znaków danego typu (lowercase letters, uppercase letters, digits, special characters).
- password_policy_consecutive – pozwala ograniczyć liczbę powtórzeń w jednym ciągu danego znaku w haśle.
- password_policy_delay – określa ilość godzin, po której można ponownie zmienić hasło (ograniczenie działa również przy zmianie hasła w panelu administracyjnym).
- password_policy_history – uniemożliwa ponowne użycia hasła.
- password_policy_length – pozwala określić maksymalną i minimalną długość hasła.
- password_policy_username – ogranicza możliwość użycia nazwy użytkownika w haśle, umożliwia również wymuszenie zmiany hasła po upływie zdefiniowanego okresu.
- Ścieżka do konfiguracji: /admin/config/security/password-policy
- Dodatkowe linki: https://www.youtube.com/watch?v=aYLnFQh7Mj0
Security Kit
- Projekt: https://www.drupal.org/project/seckit
- Ocena przydatności: w zależności od potrzeb
Moduł ten pozwana na zwiększenie bezpieczeństwo Drupala poprzez ochronę przed typowymi zagrożeniami webowymi, takimi jak ataki typu XSS, clickjacking oraz SSL stripping. Pozwala na konfigurację nagłówków HTTP, Content Security Policy (CSP), zarządzanie HTTPS oraz blokowanie nieautoryzowanych osadzonych treści. Można również wyłączyć funkcję automatycznego uzupełniania nazwy użytkownika w przeglądarce na stronie logowania użytkownika.
- Ścieżka do konfiguracji: /admin/config/system/seckit
- Dodatkowe linki:
Autologout
- Projekt: https://www.drupal.org/project/autologout
- Ocena przydatności: w zależności od potrzeb
Moduł umożliwia m.in.: skonfigurowanie automatycznego wylogowywania użytkownika zgodnie ze skonfigurowanymi w tym module kryteriami.
Istnieje możliwość określenia czasu nieaktywności na stronie, po którym nastąpi wylogowanie, czy też maksymalnego czasu, po którym użytkownik zostanie bezwzględnie wylogowany. Można zdefiniować te czasy per rola oraz ustawić przekierowanie użytkownika na zdefiniowany adres zaraz po automatycznym wylogowaniu. Warto zapoznać się również z modułem https://www.drupal.org/project/autologout_alterable.
- Ścieżka do konfiguracji: /admin/config/people/autologout
Shield
- Projekt: https://www.drupal.org/project/shield
- Ocena przydatności: w zależności od potrzeb
Moduł umożliwia ograniczenie dostępu do instancji Drupala, poprzez dodanie wymogu podania zdefiniowanego użytkownika i hasła przed jakimkolwiek dostępem do witryny. Bardzo przydatne, w celu ochrony instancji testowych przed dostępem z zewnątrz. Zastąpić może często stosowe mechanizmy konfigurowane po stronie DevOps
- Ścieżka do konfiguracji: /admin/config/system/shield
Username Enumeration Prevention
- Projekt: https://www.drupal.org/project/username_enumeration_prevention
- Ocena przydatności: w zależności od potrzeb
Moduł ten ogranicza możliwość identyfikacji nazw użytkowników przez osoby niezalogowane.
- Ścieżka do konfiguracji: Niczego nie trzeba konfigurować.
Masquerade
- Projekt: https://www.drupal.org/project/masquerade
- Ocena przydatności: w zależności od potrzeb
Moduł ten umożliwia administratorom przełączanie się na innych użytkowników bez podawania hasła i pracy w kontekście tego użytkownika. Bardzo przydatne narzędzie dla developerów i administratorów do testowania uprawnień użytkowników oraz diagnozowania problemów z dostępem lub konfiguracją.
Aby przełączyć się na użytkownika, należy przejść do zakładki /admin/people i z operacji wybrać Masquerade as.
- Ścieżka do konfiguracji: Niczego nie trzeba konfigurować.
Security Review
- Projekt: https://www.drupal.org/project/security_review
- Ocena przydatności: zawsze
Narzędzie to posiada listę testów weryfikujących podatności związane z konfiguracją aplikacji i środowiska.
Testy można wywołać ręcznie w panelu administracyjnym lub też wpleść go w skrypty releasujące, wywołując komendę drush security:review.
- Ścieżka do konfiguracji: /admin/config/security-review
- Dodatkowe linki: https://www.droptica.pl/blog/security-review-opis-modulu/
CORS UI
- Projekt: https://www.drupal.org/project/cors_ui
- Ocena przydatności: zawsze
Daje nam możliwość zarządzania ustawieniami Cross-Origin Resource Sharing (CORS). Umożliwia administratorom witryny łatwą konfigurację polityk CORS bez konieczności ręcznej edycji plików konfiguracyjnych. Dzięki temu integracja z zewnętrznymi aplikacjami i usługami staje się bardziej intuicyjna i mniej podatna na błędy.
- Ścieżka do konfiguracji: /admin/config/services/cors
- Dodatkowe linki:
Flood control
- Projekt: https://www.drupal.org/project/flood_control
- Ocena przydatności: zawsze
Moduł pozwala ograniczyć ilość błędnych logowań per IP lub użytkownik, ustawić whitelist lub ograniczyć możliwość wysyłania formularzy dla danego adresu email.
- Ścieżka do modułu: /admin/config/people/flood-control

Podsumowanie
Z opisanymi wyżej modułami startujesz z Drupalem w wersji “pro”, którą łatwiej rozwijać, utrzymywać i bezpiecznie użytkować. Wiedza o funkcjonalnościach pozwoli Ci błyskawicznie dostosowywać rozwiązania do potrzeb klienta, ale też może być pierwszą checklistą przy każdym nowym wdrożeniu.
***
Jeśli interesuje Cię tematyka Drupal, zajrzyj koniecznie również do innego artykułu naszego specjalisty: Drupal vs. WordPress – który system wybrać?
Zostaw komentarz