Motywy (themes) w Drupal – jak działają

drupal

Motywy w Drupal odpowiadają za wygląd całej strony – od układu bloków, przez typografię, po szczegóły interfejsu. Bez znajomości ich działania trudno skutecznie projektować i rozwijać serwis oparty na tym systemie. Zrozumienie relacji między motywem głównym, motywami potomnymi, szablonami Twig oraz konfiguracją pozwala tworzyć elastyczne, wydajne i łatwe w utrzymaniu rozwiązania, a także świadomie korzystać z gotowych motywów z ekosystemu Drupala.

Podstawy działania motywów w Drupal

Rola motywu w architekturze Drupala

Drupal opiera się na silnym rozdzieleniu warstwy logiki od warstwy prezentacji. Motyw odpowiada wyłącznie za to, jak dane są prezentowane, a nie za ich przetwarzanie. Logiką zajmują się moduły, a motyw używa dostarczonych przez nie struktur danych, by wygenerować HTML, CSS i ewentualnie JavaScript.

W praktyce oznacza to, że zmiana motywu nie powinna wpływać na dane zapisane w bazie ani na działanie funkcji biznesowych strony. Zmienia się wyłącznie wygląd: układ bloków, struktura szablonów, klasy CSS, sposób prezentacji pól czy list. Taka separacja ułatwia modernizację interfejsu bez ingerencji w głęboką logikę serwisu.

Motyw a moduł – najważniejsze różnice

Choć motywy i moduły w Drupal są podobne jako rozszerzenia, mają inne zadania.

  • Moduł dodaje lub modyfikuje funkcjonalność: pola, typy zawartości, integracje z API, reguły biznesowe.
  • Motyw odpowiada za warstwę wizualną, czyli HTML, CSS, JS oraz konfigurację regionów, w których umieszczane są bloki.

Moduły mogą rejestrować swoje własne szablony Twig, ale to motyw ma zazwyczaj ostatnie słowo, bo może je nadpisać. Dzięki temu twórca motywu może dopasować wygląd nawet bardzo złożonych elementów generowanych przez rozbudowane moduły.

Rodzaje motywów: core, contributed, custom

W Drupal wyróżnia się trzy główne typy motywów:

  • Core – dostarczane razem z samym Drupalem (np. Claro, Olivero). Są dobrze przetestowane, ale raczej uniwersalne niż wyspecjalizowane pod konkretny projekt.
  • Contributed – tworzone i udostępniane przez społeczność. Pozwalają szybciej wystartować, zwłaszcza gdy zależy nam na gotowych layoutach i komponentach.
  • Custom – przygotowane specjalnie dla danego projektu. Dają największą kontrolę nad wydajnością, kodem frontendu i procesem tworzenia nowych elementów interfejsu.

Częstą praktyką jest użycie motywu contributed jako motywu bazowego, a następnie stworzenie własnego motywu potomnego, który wprowadza unikatową identyfikację wizualną i specyficzne szablony.

Struktura katalogów motywów

Struktura katalogów ma znaczenie dla organizacji projektu. W Drupal 9 i 10 standardowo spotkamy się z następującym podziałem:

  • core/themes – motywy będące częścią rdzenia Drupala;
  • themes/contrib – motywy zainstalowane z zewnętrznych źródeł, zwykle przez Composer;
  • themes/custom – własne motywy tworzone na potrzeby konkretnego serwisu.

W każdym motywie znajdziemy zazwyczaj plik info, katalogi templates, css, js, a czasami także images lub assets. Ta struktura ułatwia zespołowi rozwój i utrzymanie rozbudowanych interfejsów, zwłaszcza gdy projekt trwa wiele lat.

Pliki konfiguracyjne i dziedziczenie motywów

Plik info.yml – serce konfiguracji motywu

Każdy motyw w Drupal zaczyna się od pliku z rozszerzeniem .info.yml. To właśnie w nim definiujemy podstawowe właściwości motywu:

  • nazwa i opis,
  • wersja,
  • zależności,
  • motyw bazowy (base theme),
  • obsługiwane regiony (header, content, sidebar, footer i inne),
  • dołączane biblioteki z CSS i JavaScript.

Dobrze zaprojektowany plik info.yml jest fundamentem przejrzystej architektury frontendu. Pozwala zapanować nad tym, które zasoby są ładowane globalnie, a które tylko w wybranych częściach strony, co przekłada się na optymalizację czasu ładowania.

Motyw bazowy i motyw potomny

Jedną z najważniejszych cech systemu motywów w Drupal jest możliwość dziedziczenia. Motyw potomny może:

  • odziedziczyć szablony Twig z motywu bazowego,
  • nadpisać wybrane szablony Twiga,
  • rozszerzyć lub ograniczyć biblioteki CSS i JS,
  • dodać własne regiony lub zmienić istniejące.

Normalną praktyką jest wykorzystanie sprawdzonego motywu bazowego (np. stabilnego motywu ukierunkowanego na responsywność) i zbudowanie na nim dedykowanego motywu potomnego dla konkretnej marki. Taka strategia przyspiesza start projektu, jednocześnie zachowując elastyczność.

Regiony i ich znaczenie w layoutach

Regiony to nazwy obszarów, w których Drupal może umieszczać bloki. Przykładowe regiony:

  • header – górna część strony,
  • primary_menu – główne menu nawigacyjne,
  • content – główna zawartość strony,
  • sidebar_first / sidebar_second – kolumny boczne,
  • footer – stopka.

Motyw deklaruje dostępne regiony w pliku info.yml. Administrator witryny może następnie przypisywać bloki do tych regionów z poziomu panelu. To właśnie regiony tworzą swego rodzaju „siatkę” dla układania elementów interfejsu bez potrzeby modyfikowania kodu szablonów.

Override i kolejność ładowania motywów

Drupal definiuje kolejność, w jakiej poszukuje szablonów Twig. Najpierw sprawdzany jest aktywny motyw potomny, potem ewentualny motyw bazowy, a na końcu szablony z modułów. Pozwala to na tzw. override, czyli nadpisywanie dowolnych szablonów przez motyw.

Jeśli istnieje plik szablonu w motywie o nazwie odpowiadającej wzorcowi używanemu przez Drupal, to ten plik ma pierwszeństwo. Dzięki temu bez ingerowania w kod modułu możemy zmienić HTML formularzy, widoków list, węzłów, komentarzy i innych elementów.

Szablony Twig i logika prezentacji

Rola języka Twig w Drupal

Drupal wykorzystuje system szablonów Twig jako warstwę prezentacji. Twig jest językiem szablonów, który umożliwia:

  • wstawianie zmiennych przekazanych z PHP do HTML,
  • proste operacje warunkowe i pętle,
  • dzielenie szablonów na mniejsze części i ich ponowne użycie.

Droga od logiki PHP do wyświetlanego HTML wygląda tak, że najpierw moduły i system Drupala przygotowują dane, a następnie są one przekazywane do szablonów Twig, gdzie zostają sformatowane. Dzięki temu frontendowiec może pracować niemal wyłącznie w plikach Twig, CSS i JS, bez konieczności pisania kodu PHP.

Najczęściej używane typy szablonów

Szablony Twig uwzględniane przez Drupal mają różne role. Do najważniejszych należą:

  • node.html.twig – pojedynczy węzeł (np. artykuł, strona, produkt),
  • page.html.twig – cała strona, łącznie z regionami,
  • block.html.twig – pojedynczy blok,
  • field.html.twig – pojedyncze pole (np. tytuł, obrazek, opis),
  • views-view.html.twig i powiązane – szablony dla modułu Views, obsługujące listy treści.

Dzięki systemowi nazw i sugestii tematycznych można tworzyć wyspecjalizowane szablony, np. dla konkretnego typu węzła lub widoku, co pozwala bardzo granularnie sterować prezentacją.

Sugestie tematyczne (theme suggestions)

Sugestie tematyczne to mechanizm, który umożliwia Drupalowi wybranie najbardziej szczegółowego, dostępnego szablonu dla danego kontekstu. Przykładowo, system może szukać plików w takiej kolejności:

  • node–article–full.html.twig – węzeł typu article w trybie full,
  • node–article.html.twig – dowolny węzeł typu article,
  • node.html.twig – domyślny szablon dla wszystkich węzłów.

Dzięki temu można przygotować bardzo specyficzne wersje szablonów, nie rezygnując z ogólnych plików, które obsłużą wszystkie inne przypadki. Sugestie tematyczne są kluczowe, gdy budujemy złożone serwisy z różnymi typami treści o odmiennych układach.

Bezpieczeństwo i filtrowanie danych w Twig

Twig w Drupal ma wbudowane mechanizmy zabezpieczające przed typowymi błędami, takimi jak wstrzykiwanie HTML czy JavaScript. Dane wyjściowe są domyślnie filtrowane, a aby wstawić surowy HTML, trzeba użyć specjalnych filtrów. Taka polityka domyślnego bezpieczeństwa minimalizuje ryzyko błędów popełnianych przez twórców motywów.

Tworząc motyw, warto korzystać z tej ochrony i unikać niepotrzebnego wyłączania filtrowania. W praktyce oznacza to, że dane przekazywane do Twig traktujemy jako potencjalnie niebezpieczne, a ich „oczyszczaniem” zajmuje się system, chyba że mamy silne powody, by to nadpisać.

Biblioteki, zasoby statyczne i wydajność

Biblioteki (libraries.yml) i ich rola

W nowoczesnych wersjach Drupal frontend jest zarządzany za pomocą bibliotek definiowanych w pliku .libraries.yml. Każda biblioteka może zawierać:

  • pliki CSS z podziałem na media (np. base, theme, component),
  • pliki JavaScript,
  • zależności od innych bibliotek.

Szablony Twig mogą ładować konkretne biblioteki w zależności od potrzeb. Taka architektura umożliwia minimalizowanie ilości ładowanego kodu na stronach, które go nie wymagają. Jest to jeden z kluczowych mechanizmów, które wpływają na realną wydajność całej witryny.

Optymalizacja CSS i JavaScript

Drupal ma wbudowane mechanizmy agregacji i kompresji CSS oraz JS. Dobrze przygotowany motyw:

  • unika duplikowania tych samych bibliotek na wielu poziomach,
  • stosuje spójny system klas i komponentów,
  • ogranicza wczytywanie rozbudowanych frameworków tam, gdzie nie są konieczne.

Połączenie agregacji z rozsądnym podziałem bibliotek pozwala skrócić czas ładowania, zmniejszyć liczbę żądań do serwera i poprawić wyniki w testach takich jak Lighthouse czy PageSpeed Insights.

Integracja z narzędziami frontendowymi

Wiele nowoczesnych motywów Drupala integruje się z narzędziami używanymi w świecie frontendu: systemami bundlingu, preprocesorami CSS i menedżerami pakietów. Popularne są między innymi:

  • Sass lub Less do pisania modułowych, łatwiejszych w utrzymaniu arkuszy stylów,
  • Webpack, Vite lub Gulp do budowania paczek frontendu,
  • npm czy Yarn do zarządzania zależnościami JavaScript.

Motyw może mieć własny proces kompilacji, który generuje finalne, zoptymalizowane pliki CSS i JS umieszczane w katalogu motywu. Drupal widzi jedynie wynik tej kompilacji, a nie narzędzia stojące za procesem – te są używane przez zespół deweloperski.

Responsywność i mobile-first w motywach

Obecnie większość projektów stawia na podejście mobile-first. Motywy Drupala wspierają responsywność dzięki:

  • siatkom CSS,
  • systemom komponentów (np. BEM),
  • szablonom projektowanym z myślą o różnych szerokościach ekranu.

Responsywny motyw to nie tylko elastyczne kontenery, ale również użyteczność na małych ekranach: czytelne formularze, odpowiednia wielkość przycisków, uproszczona nawigacja. Drupal sam w sobie daje narzędzia do zmiany kolejności bloków czy prezentacji menu, a zadaniem motywu jest wykorzystanie tych możliwości zgodnie z założeniami projektu.

Praktyczne aspekty tworzenia i rozwijania motywów

Tworzenie prostego motywu od podstaw

Podstawowy cykl tworzenia prostego motywu wygląda zwykle następująco:

  • utworzenie katalogu w themes/custom,
  • dodanie pliku info.yml z podstawową konfiguracją,
  • przygotowanie pierwszego szablonu page.html.twig i prostych stylów CSS,
  • włączenie motywu w panelu administracyjnym Drupala,
  • stopniowe dodawanie nowych szablonów i bibliotek.

Na tym etapie kluczowe jest dobrze przemyślane nazewnictwo plików oraz spójna konwencja stylowania. Dzięki temu z czasem można rozbudowywać motyw bez chaosu i konfliktów między komponentami.

Debugowanie szablonów i szukanie odpowiednich plików

Drupal oferuje przydatne narzędzia do debugowania motywów. Po włączeniu trybu deweloperskiego i opcji debugowania Twig, w kodzie strony zaczynają się pojawiać komentarze wskazujące:

  • który szablon Twig został użyty,
  • jakie sugestie tematyczne są dostępne,
  • jak można nazwać własny plik, aby nadpisać domyślny.

To ogromne ułatwienie, gdy próbujemy znaleźć właściwy plik dla danego elementu interfejsu. Zamiast zgadywać, możemy od razu stworzyć odpowiedni szablon i mieć pewność, że zostanie on wykorzystany przez system.

Współpraca między zespołem backend i frontend

Projektowanie motywu w dużym serwisie Drupal często wymaga współpracy specjalistów od backendu i frontendu. Backend dostarcza:

  • struktury danych i typy zawartości,
  • pola i ich konfigurację,
  • logikę modułów i integracji.

Frontend tworzy szablony Twig, arkusze stylów i skrypty JS. Dobrą praktyką jest wspólne ustalenie kontraktu: jakie zmienne i struktury danych Twig będzie otrzymywał oraz jak powinien je interpretować. Ułatwia to uniknięcie niedomówień i przyspiesza prace po obu stronach.

Długoterminowe utrzymanie motywu

Wiele witryn na Drupal działa przez lata, regularnie otrzymując nowe funkcje i zmiany wizualne. Motyw musi być przygotowany na takie ewolucje. Warto zadbać o:

  • modularną strukturę plików CSS i Twig,
  • jasne komentarze i dokumentację wewnątrz kodu,
  • minimalizowanie „szybkich obejść”, które z czasem utrudniają zmiany.

Ważne jest też śledzenie zmian w samym Drupal i w modułach, które wprowadzają nowe pola czy widoki. Odpowiednio zaprojektowany motyw pozwala dodawać kolejne elementy bez konieczności gruntownej przebudowy istniejących szablonów, co przyspiesza rozwój i stabilizuje koszty utrzymania projektu.

< Powrót

Zapisz się do newslettera


Zadzwoń Napisz