- Podstawowe pojęcia i możliwości modułu Widoki
- Czym jest widok w Drupal
- Rodzaje wyświetleń: strona, blok, feed i inne
- Źródła danych w widokach
- Dlaczego warto używać widoków
- Tworzenie nowego widoku krok po kroku
- Instalacja i włączenie modułu Views
- Wybór typu treści i podstawowych ustawień
- Konfiguracja pól i formatów
- Zapisywanie i testowanie widoku
- Filtrowanie, sortowanie i relacje w widokach
- Filtry stałe i kontekstowe
- Sortowanie wyników
- Relacje między encjami
- Ekspozycja filtrów dla użytkownika
- Wyświetlanie widoków: strony, bloki i integracje
- Tworzenie strony widoku i praca z URL
- Umieszczanie widoków jako bloków
- Integracja widoków z motywem i szablonami
- Wydajność, cache i dobre praktyki
Widoki w Drupal to jedno z najpotężniejszych narzędzi, jakie oferuje ten system CMS. Pozwalają tworzyć elastyczne listy treści, strony, bloki czy feedy bez pisania własnego SQL, a jedynie poprzez klikanie w interfejsie konfiguracyjnym. Dobrze opanowane widoki umożliwiają zastąpienie wielu modułów, przyspieszenie pracy z serwisem oraz łatwe prezentowanie danych w różnych układach i filtrach, od prostych listingów po złożone zestawienia.
Podstawowe pojęcia i możliwości modułu Widoki
Czym jest widok w Drupal
Widok to zdefiniowane zapytanie do bazy danych, które Drupal prezentuje jako listę treści, użytkowników lub innych encji. Administrator, korzystając z modułu Views, buduje takie zapytanie bez konieczności pisania kodu. W praktyce oznacza to możliwość tworzenia własnych stron, bloków czy feedów RSS, które dynamicznie reagują na zmiany w bazie.
Każdy widok składa się z konfiguracji: źródła danych (tzw. baza – np. węzły, użytkownicy, terminy taksonomii), pól wyświetlanych na liście, sposobu sortowania, filtrów oraz ustawień wyświetlania. Dzięki temu można w jednym miejscu zapanować nad tym, jakie dane są pobierane i w jaki sposób są przedstawiane użytkownikom końcowym.
Widok jest przechowywany jako konfiguracja w systemie, dlatego można go łatwo eksportować między środowiskami, wersjonować oraz modyfikować bez ryzyka utraty danych. Sam moduł Views pełni rolę warstwy pośredniej między bazą danych a interfejsem użytkownika, odciążając programistów od pisania ręcznych zapytań SQL.
Rodzaje wyświetleń: strona, blok, feed i inne
Jedną z kluczowych cech widoków jest możliwość tworzenia różnych wyjść (display). Najczęściej spotykane to:
- Strona – widok dostępny pod określonym adresem URL, często z możliwością włączenia paginacji, nagłówków oraz własnego tytułu strony.
- Blok – widok wyświetlany jako blok, który można umieścić w dowolnym regionie motywu. Dzięki temu można budować np. listy najnowszych artykułów w bocznym pasku.
- Feed (RSS/Atom) – wyświetlenie przeznaczone do generowania kanałów informacyjnych z wybranych treści, przydatne do integracji z czytnikami RSS czy innymi serwisami.
- Attachment – wyświetlenie dołączane do innego display, np. blok powiązany z główną stroną widoku, współdzielący filtry i sortowanie.
Dzięki temu jedna konfiguracja widoku może być wykorzystana wielokrotnie, w różnych kontekstach. Na przykład ta sama logika filtrów i sortowania może stać się jednocześnie stroną z pełną listą treści i bardziej kompaktowym blokiem prezentującym kilka ostatnich elementów.
Źródła danych w widokach
Moduł Views operuje na tzw. bazach (base tables). Najczęstsze bazy w standardowej instalacji Drupal to:
- węzły (node) – treści redakcyjne: artykuły, strony statyczne, wpisy blogowe, wydarzenia, oferty itp.
- użytkownicy (user) – konta użytkowników, ich role i podstawowe dane profilowe.
- terminy taksonomii (taxonomy term) – kategorie, tagi, słowniki tematyczne używane do grupowania treści.
- komentarze (comment) – jeśli w serwisie jest aktywny system komentarzy.
Rozszerzenia i moduły dodatkowe mogą wprowadzać kolejne źródła danych, na przykład encje zamówień w sklepie, elementy multimediów czy rekordy z niestandardowych tabel. Mechanizm widoków jest otwarty, więc każdy programista może zarejestrować własną bazę danych jako potencjalne źródło dla widoków.
Dlaczego warto używać widoków
Powód najważniejszy to elastyczność. Administrator jest w stanie zbudować złożony listing treści bez potrzeby angażowania programisty. Wystarczy znajomość mechaniki widoków, aby tworzyć strony typu: katalog produktów, spis wydarzeń z filtrami, archiwum wpisów blogowych czy ranking najczęściej czytanych materiałów.
Drugą korzyścią jest spójność. Zamiast wielu luźnych listingów tworzonych ręcznie, wszystkie zestawienia oparte są na jednym narzędziu, co ułatwia utrzymanie i zmiany konfiguracji. Łatwiej jest też zadbać o takie kwestie jak paginacja, sortowanie, filtry czy dostępność, ponieważ Views oferuje gotowe mechanizmy do ich obsługi.
Nie bez znaczenia pozostaje możliwość ponownego wykorzystania konfiguracji. Widok raz przygotowany może mieć kolejne wyświetlenia, może być kopiowany, klonowany między środowiskami, a nawet modyfikowany przez różne osoby, jeśli uprawnienia na to pozwalają. To duża oszczędność czasu w rozwoju i utrzymaniu serwisu.
Tworzenie nowego widoku krok po kroku
Instalacja i włączenie modułu Views
W nowszych wersjach Drupal, od wydania 8 w górę, moduł Views jest częścią rdzenia systemu. Oznacza to, że nie trzeba go dodatkowo instalować zewnętrznie, wystarczy jedynie upewnić się, że jest włączony w sekcji modułów. W starszych wydaniach, takich jak Drupal 7, Views był osobnym modułem do pobrania i zainstalowania razem z modułem Views UI odpowiedzialnym za interfejs administracyjny.
Aby rozpocząć pracę z widokami, przechodzi się do panelu administracyjnego i sekcji konfiguracji widoków. Tam dostępna jest lista istniejących konfiguracji oraz przycisk dodawania nowego. Włączenie interfejsu Views UI jest konieczne, by w ogóle móc korzystać z graficznego tworzenia i edycji widoków, dlatego warto upewnić się, że moduł ten jest aktywny.
Wybór typu treści i podstawowych ustawień
Proces tworzenia widoku zazwyczaj rozpoczyna kreator. Pierwszym krokiem jest wybór bazy danych (np. węzły) oraz typu treści, który ma być wyświetlany. Można ograniczyć widok do jednego typu, na przykład tylko artykułów, albo pozostawić wszystkie typy węzłów, jeśli planuje się bardziej ogólny listing.
Kreator pozwala też określić kilka kluczowych parametrów już na starcie:
- tytuł widoku, widoczny w interfejsie administracyjnym oraz na stronie, jeśli nie zostanie nadpisany,
- informację, czy widok ma tworzyć stronę, blok, czy obie formy wyświetlenia,
- adres URL dla wersji strony oraz ewentualny format wyświetlania (lista, tabele, siatka),
- liczbę elementów wyświetlanych na stronie oraz ewentualną paginację.
Już na tym etapie warto dobrze przemyśleć strukturę serwisu. Zaplanowanie, gdzie dokładnie ma się pojawić nowy widok oraz jakie ma pełnić zadanie, pozwoli uniknąć późniejszej konieczności gruntownej przebudowy konfiguracji.
Konfiguracja pól i formatów
Widoki umożliwiają dwa główne podejścia do prezentacji danych: wyświetlanie całych encji (np. pełnych węzłów według wybranego trybu wyświetlania) lub listy poszczególnych pól. W drugim przypadku administrator ma pełną kontrolę nad tym, jaka informacja pojawia się w każdej kolumnie, w jakiej kolejności i w jakim formacie.
Dodając pola, można wybierać spośród pól standardowych (tytuł, autor, data utworzenia) oraz pól niestandardowych zdefiniowanych w typach treści. Dla każdego pola dostępne są ustawienia formatu: skracanie tekstu, wyświetlanie linków, sposobu prezentacji dat, formatowania liczb i wiele innych. Można też ukrywać pole w wyjściu, ale wykorzystywać je w filtrach lub sortowaniu.
Format wyjścia obejmuje m.in. proste listy, tabele, siatki, slajdery (przy wsparciu innych modułów) czy formaty specjalne np. mapy z punktami. Tabele pozwalają z kolei włączyć sortowanie kolumn po stronie użytkownika, co jest przydatne w bardziej analitycznych zestawieniach danych.
Zapisywanie i testowanie widoku
Po skonfigurowaniu podstawowych opcji warto skorzystać z podglądu widoku dostępnego w interfejsie Views UI. Pozwala on zobaczyć wynik zapytania bez opuszczania ekranu konfiguracji oraz od razu wychwycić błędy w filtrach lub sortowaniu. Podgląd jest przydatny także przy testowaniu bardziej złożonych relacji między encjami.
Gdy wynik odpowiada oczekiwaniom, widok należy zapisać. Od tej chwili, jeśli został zdefiniowany display typu strona, będzie dostępny pod podanym adresem URL. W przypadku wyświetlenia typu blok trzeba jeszcze przejść do sekcji zarządzania blokami i umieścić go w wybranym regionie motywu.
Testując nowy widok, warto sprawdzić go także z perspektywy różnych ról użytkowników. Odpowiednio zdefiniowane uprawnienia mogą sprawić, że część danych będzie widoczna tylko dla zalogowanych, redaktorów lub administratorów, co ma istotne znaczenie dla bezpieczeństwa i zgodności z polityką publikacji w serwisie.
Filtrowanie, sortowanie i relacje w widokach
Filtry stałe i kontekstowe
Filtry to mechanizm ograniczający zbiór danych zwracanych przez widok. Filtry stałe są ustawione na sztywno w konfiguracji i dotyczą wszystkich użytkowników w ten sam sposób. Przykładem może być ograniczenie do węzłów opublikowanych, określonego typu treści czy wybranej taksonomii. Takie ustawienia są idealne, gdy widok ma pełnić jasno określoną funkcję, np. prezentować wyłącznie aktualne oferty pracy.
Filtry kontekstowe (dawniej nazywane argumentami) działają dynamicznie i pobierają swoją wartość z otoczenia: adresu URL, parametrów ścieżki, bieżącego użytkownika, terminu taksonomii i innych źródeł. Dzięki nim można budować widoki, które zmieniają zawartość w zależności od kontekstu, np. lista artykułów powiązanych z aktualnie oglądaną kategorią lub lista treści przypisanych do zalogowanego autora.
Stosując filtry kontekstowe, można w jednym widoku obsłużyć wiele możliwych ścieżek bez konieczności tworzenia wielu klonów konfiguracji. Niezbędne jest jednak dobre zrozumienie, skąd pochodzą wartości filtrów oraz w jaki sposób są przekazywane do widoku, zwłaszcza przy bardziej rozbudowanych adresach URL i niestandardowym routingu.
Sortowanie wyników
Sortowanie definiuje kolejność wyświetlania danych. Najczęściej stosowane jest sortowanie po dacie utworzenia, aby najnowsze treści były na górze listy. Można jednak wykorzystać inne kryteria, takie jak tytuł alfabetycznie, liczba wyświetleń, ręczne ustawienia wag czy nawet wynik losowy.
Widoki pozwalają dodać wiele kryteriów sortowania, z określeniem ich priorytetu. Przykładowo: najpierw sortowanie po dacie publikacji malejąco, a następnie po tytule rosnąco dla treści opublikowanych tego samego dnia. Przy tabelach możliwe jest również włączenie interaktywnego sortowania przez użytkownika, co poprawia użyteczność bardziej złożonych list.
W niektórych scenariuszach przydatne jest sortowanie po polach niestandardowych, takich jak data wydarzenia czy wartość liczbową. Wymaga to odpowiedniej konfiguracji formatu pól, aby system sortował po właściwym typie danych, a nie np. po sformatowanym tekście.
Relacje między encjami
Relacje umożliwiają łączenie danych z różnych tabel, podobnie jak w relacyjnych bazach danych. Przykładem może być połączenie węzłów z ich autorem, terminu taksonomii z powiązanymi treściami czy produktów z zamówieniami. Dzięki relacjom można w jednym widoku wyświetlać informacje pochodzące z różnych źródeł, zachowując spójną strukturę wyników.
Konfigurując relację, określa się, które pola mają zostać powiązane. Po jej dodaniu w widoku stają się dostępne dodatkowe pola, filtry i sortowania pochodzące z połączonej encji. Na przykład, łącząc węzeł z autorem, można sortować po nazwie użytkownika lub filtrować listę po roli autora.
Należy pamiętać, że każda relacja wpływa na złożoność generowanego zapytania i może mieć konsekwencje wydajnościowe. Przy rozbudowanych serwisach warto starannie planować, które relacje są konieczne i jak można uprościć strukturę danych, by widoki pozostawały szybkie i responsywne.
Ekspozycja filtrów dla użytkownika
Widoki pozwalają udostępnić część filtrów jako panel wyszukiwania lub formularz filtrujący na stronie. Użytkownik końcowy może wówczas samodzielnie zawężać wyniki według kategorii, zakresu dat, autora czy innych parametrów. Taki mechanizm jest fundamentem budowy katalogów, wyszukiwarek i rozbudowanych listingów, w których odbiorca ma duży wpływ na prezentowane dane.
Ekspozycja filtra polega na oznaczeniu go w konfiguracji jako widoczny w formularzu widoku. Można wówczas ustawić jego etykietę, rodzaj pola (lista rozwijana, pola wyboru, pole tekstowe), domyślną wartość oraz sposób odświeżania wyników. Przy odpowiedniej konfiguracji można uzyskać efekt interaktywnego wyszukiwania, w którym zmiana filtra automatycznie aktualizuje listę rezultatów.
Dobrze zaprojektowany formularz filtrujący zwiększa użyteczność serwisu, ale wymaga także przemyślenia, które opcje są naprawdę potrzebne użytkownikowi, a które mogłyby jedynie wprowadzać chaos. Nadmierna liczba filtrów może utrudnić odnalezienie treści zamiast to ułatwiać.
Wyświetlanie widoków: strony, bloki i integracje
Tworzenie strony widoku i praca z URL
Strona widoku to najprostszy sposób prezentacji wyników użytkownikom. Konfigurując display typu strona, należy podać ścieżkę URL, na przykład artykuly, wydarzenia lub katalog/produkty. Drupal zarejestruje tę ścieżkę w systemie routingu, dzięki czemu odwiedzenie jej przez przeglądarkę spowoduje wyświetlenie wyników widoku.
Można też ustalić tytuł strony oraz ewentualny opis meta, co ma znaczenie dla optymalizacji pod kątem wyszukiwarek. Widok pełniący rolę głównej listy treści w serwisie może zostać podpięty jako strona początkowa, co pozwala zbudować bardzo elastyczną stronę główną bez konieczności programowania osobnego kontrolera.
Przy bardziej zaawansowanych projektach często wykorzystuje się także argumenty ścieżki, aby jeden widok obsługiwał wiele podobnych stron, na przykład katalog według kategorii lub według autora. Wymaga to ścisłej współpracy filtrów kontekstowych i systemu adresów URL, ale daje ogromne możliwości konfiguracyjne.
Umieszczanie widoków jako bloków
Wyświetlenia typu blok pozwalają traktować widok jako modułowy element interfejsu, który można umieścić w dowolnym regionie wybranego motywu. Jest to idealne rozwiązanie dla krótszych list, takich jak ostatnie wpisy blogowe, promowane wydarzenia, losowy cytat lub podpowiedzi nawigacyjne.
Po utworzeniu display typu blok, widok pojawia się na liście dostępnych bloków w systemie. Administrator może następnie przypisać go do regionu, określić warunki wyświetlania (np. tylko na niektórych stronach, tylko dla zalogowanych użytkowników) oraz ewentualnie nadać mu tytuł widoczny na froncie.
Warto pamiętać, że ten sam widok może mieć kilka bloków z różnymi ustawieniami. Przykładowo, na jednej podstronie można prezentować blok z trzema ostatnimi artykułami, a w innym regionie serwisu blok z piętnastoma wpisami, mimo że oba korzystają z tej samej logiki filtrów i sortowania.
Integracja widoków z motywem i szablonami
Choć większość konfiguracji widoku można ustawić w interfejsie, niekiedy konieczne jest dostosowanie jego wyglądu do konkretnego motywu graficznego. Drupal umożliwia nadpisywanie szablonów Twig odpowiedzialnych za renderowanie poszczególnych części widoku, takich jak wiersze, pola, nagłówki, stopki czy kontenery.
Poprzez odpowiednie nazewnictwo plików szablonów można tworzyć osobne pliki dla konkretnego widoku, wyświetlenia lub nawet pojedynczego pola. To rozwiązanie pozwala projektantom frontendu na precyzyjne dopasowanie struktury HTML, klas CSS i atrybutów, przy jednoczesnym zachowaniu logicznej konfiguracji w panelu administratora.
Współpraca między konfiguracją widoku a warstwą prezentacji jest kluczem do tworzenia estetycznych, dostępnych i responsywnych listingów. Dzięki temu można łączyć elastyczność zapytań Views z pełną kontrolą nad wyglądem generowanego kodu HTML.
Wydajność, cache i dobre praktyki
Widoki, jako narzędzie generujące zapytania do bazy, mają bezpośredni wpływ na wydajność serwisu. Każde dodatkowe wyświetlenie, filtr, relacja czy złączenie tabel może zwiększać obciążenie serwera, zwłaszcza przy dużej liczbie jednoczesnych odwiedzin. Dlatego tak ważne jest korzystanie z mechanizmów cache oraz świadome projektowanie struktury danych.
Drupal oferuje wbudowane mechanizmy buforowania wyników widoków. Można ustawić określony czas przechowywania danych w cache, co zmniejsza liczbę wykonywanych zapytań przy kolejnych odwiedzinach tej samej strony. Przy treściach rzadziej aktualizowanych warto ustawić dłuższy czas cache, natomiast przy listach zdarzeń na żywo konieczne może być częstsze odświeżanie.
Dobre praktyki obejmują również unikanie nadmiernie skomplikowanych relacji, ograniczanie liczby wyświetlanych elementów na jednej stronie oraz korzystanie z paginacji zamiast prezentowania wielu setek rekordów jednocześnie. Starannie zaprojektowane widoki nie tylko przyspieszają działanie serwisu, ale także poprawiają wygodę korzystania z niego przez użytkowników.