Sii Polska

SII UKRAINE

SII SWEDEN

  • Szkolenia
  • Kariera
Dołącz do nas Kontakt
Wstecz

Sii Polska

SII UKRAINE

SII SWEDEN

Wstecz

09.05.2025

Daj Drupalowi to, czego nie dostał przy porodzie

09.05.2025

Daj Drupalowi to, czego nie dostał przy porodzie

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

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

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

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

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

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.

Entity Browser

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.

Redirect

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

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.

Media library

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

ikona

Media entity browser

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ę.

select media
  • Ścieżki do konfiguracji: /admin/config/content/entity_browser

Trash

Ś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.

Dropzonejs

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

add or select media

Pathauto

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.

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

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.

rename admin path
  • Ścieżka do konfiguracji: /backend/config/system/rename-admin-paths

Password Policy

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.

Security Kit

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.

Autologout

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

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

Moduł ten ogranicza możliwość identyfikacji nazw użytkowników przez osoby niezalogowane.

  • Ścieżka do konfiguracji: Niczego nie trzeba konfigurować.

Masquerade

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

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.

CORS UI

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.

Flood control

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
oferty pracy

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ć?

3.7/5
Ocena
3.7/5
Avatar

O autorze

Andrzej Gierszewski

Senior Software Engineer z ponad dekadą doświadczenia w tworzeniu oprogramowania w PHP i analizie wymagań biznesowych. Specjalizuje się w backendzie ze szczególnym naciskiem na integracje między systemami. W wolnych chwilach podróżuje i rozwija prywatne projekty programistyczne

Wszystkie artykuły autora

Zostaw komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Może Cię również zainteresować

Dołącz do nas

Sprawdź oferty pracy

Pokaż wyniki
Dołącz do nas Kontakt

This content is available only in one language version.
You will be redirected to home page.

Are you sure you want to leave this page?