Jak zapanować nad adresami URL w Drupalu? Przegląd modułu Pathauto
Dobry CMS można poznać po tym, jak radzi sobie z adresami URL poszczególnych podstron. Przyjazne linkowanie przyciąga użytkowników z wyszukiwarek internetowych, ma też istotny wpływ na SEO. W tym artykule przedstawię Ci moduł Pathauto, służący do automatyzacji tworzenia aliasów stron.
Dzięki temu modułowi łatwo skonfigurujesz sprawnie działające, bezobsługowe aliasy do Twoich treści, w tym także terminów taksonomii i stron użytkowników.
Daty
Pierwsza wersja Pathauto ukazała się w lutym 2006 roku, jako dodatek do Drupala 4. Stabilną wersję 1.0 wydano dla Drupala 5 w 2007 roku. Dzisiejszy kod tego modułu z gałęzi 8.x-1.x jest efektem długiej ewolucji, w którą zaangażowanych było wielu członków społeczności Drupal.org.
Popularność
Liczby z oficjalnych statystyk mówią same za siebie - modułu Pathauto używa ponad 640 tysięcy stron. Natomiast 32% z nich zbudowanych jest w oparciu o Drupala 8 i 9. Mamy tu do czynienia z jednym z “niezbędników”, instalowanych od razu na etapie tworzenia nowych projektów.
Twórcy modułu
Moduł jest utrzymywany obecnie przez czterech programistów:
- Sascha Grossenbacher - Lead Developer w firmie MD Systems,
- Dave Reid - Senior Developer w firmie Lullabot,
- Greg Knaddison - z fundacji Morris Animal Foundation,
- Frederik Sandberg Olesen.
Od początku istnienia Pathauto w jego rozwój zaangażowało się ponad 100 osób, które wykonały łącznie niemal 1600 commitów. O ogromnym wkładzie społeczności świadczy ponad 3000 zgłoszonych zadań i błędów na Drupal.org. Niestety wiele z nich pozostało nierozwiązanych.
Przeznaczenie moduł
W czystym Drupalu możemy tworzyć aliasy URL dla poszczególnych podstron, ale musimy to robić ręcznie. Jeśli nie wypełnimy pola z aliasem, nowe treści będą miały standardowe, mało przyjazne adresy typu /node/123 lub /taxonomy/term/456.
Moduł Pathauto automatyzuje dodawanie aliasów, generując je według określonego przez nas szablonu z tokenami. Statyczne strony mogą mieć przykładowo adres stanowiący pochodną tytułu (/foo-bar), terminy taksonomii zaś zawierać nazwę słownika (/vocabulary-name/foo-bar).
Unboxing
Moduł możesz pobrać ze strony Drupal.org lub dołączyć do projektu wywołując komendę:
composer require drupal/pathauto
Po włączeniu Pathauto, przejdź do jego ustawień wybierając
Configuration → Search and Metadata → URL Aliases → Patterns
Użycie modułu
Pathauto posiada bogaty zestaw ustawień dotyczących sposobu generowania aliasów. Pozwala też na przeprowadzenie masowych operacji na istniejących już treściach. Poniżej opiszę pokrótce najważniejsze z dostępnych opcji.
Szablony adresów
Podstawową funkcjonalnością modułu Pathauto jest tworzenie szablonów adresów URL, czyli ciągów znaków zawierających tokeny. Na ich podstawie, przy zapisywaniu treści generowane są poszczególne aliasy.
Wyjaśnię to na przykładzie blogu. Jeśli chcesz, aby Twoje posty były dostępne pod adresem http://example.com/2021/foo-bar.html zawierającym rok publikacji i tytuł, przejdź do panelu Configuration → Search and Metadata → URL Aliases → Patterns i dodaj nowy szablon dla odpowiedniego rodzaju zawartości:
Spróbuj teraz stworzyć nowy post na blogu. Powinien on otrzymać docelowy adres /2021/foo-bar.html. Zwróć uwagę na fakt, że nadal możesz nadpisać jego alias URL, jednak domyślnie jest on generowany automatycznie:
Transliteracja
Tytuły stron zazwyczaj zawierają spacje i znaki specjalne. Pathauto automatycznie konwertuje je do formatu ASCII rozdzielonego myślnikami. W ten sposób tytuł typu “How to Make Crème Brûlée?” zostanie zamieniony na prostszą wersję “how-to-make-creme-brulee”. Ustawienia tej konwersji znajdziesz w zakładce “Settings”.
Większość z tych opcji sugeruję pozostawić w wersji domyślnej, zwróć jednak szczególną szczególną uwagę na pole “Strings to Remove”. Zawiera ono ciągi znaków, które zostaną usunięte z adresu, w tym liczne angielskie przyimki i przedimki. Jeśli stworzysz blog post o tytule “A Guide To Drupal”, otrzymasz adres /2021/guide-drupal.html, co nie zawsze jest pożądanym efektem.
Pozostałe ustawienia pozwalają na niezwykle szczegółowe dostosowanie transliteracji w aliasach, co przydaje się przy obsłudze wielu języków. Możesz m.in. zadecydować tu o sposobie obsługi interpunkcji.
Masowe generowanie adresów
Domyślnie Pathauto generuje aliasy wyłącznie podczas zapisywania treści. Oznacza to, że jeśli zmienimy szablon URL, jego modyfikacja nie zostanie uwzględniona natychmiast w aliasach na całej stronie. Również po dodaniu nowego szablonu, cała objęta przez niego treść nie otrzyma od razu nowego adresu URL.
W trakcie tworzenia dużych serwisów internetowych często zachodzi potrzeba szybkiego zregenerowania aliasów dla dotychczasowej treści. Służy do tego funkcja “Bulk Generate”, udostępniająca masowe operacje na adresach URL.
Zachowaj tu szczególną ostrożność, aby przypadkowo nie nadpisać istniejących aliasów nowszymi wersjami. Polecam tu instalację modułu Redirect, który zachowuje przekierowania między starymi a nowymi adresami podstron.
Usuwanie aliasów
Moduł Pathauto posiada także zaawansowany panel do usuwania aliasów. Korzystając z niego zachowaj czujność. Wszelkie wprowadzone tu zmiany są nieodwracalne. Zapewne przyda Ci się opcja “Only delete automatically generated aliases”, która chroni przed usunięciem nadpisanych ręcznie aliasów.
Hooki i integracje
Pathauto z gałęzi 8.x-1.x umożliwia obsługę dowolnego rodzaju encji za pomocą pluginów typu @AliasType, dostarcza także kilka prostych hooków:
- hook_pathauto_is_alias_reserved() - blokuje tworzenie aliasu, jeśli jest zarezerwowany przez inny moduł. W takim przypadku do aliasu zostanie dodana liczba (np. /foo-bar1).
- hook_pathauto_punctuation_chars_alter() - służy do dodawania nowych ustawień interpunkcji.
- hook_pathauto_pattern_alter() - umożliwia modyfikację szablonu adresu URL.
- hook_pathauto_alias_alter() - pozwala zmienić alias już po jego wygenerowaniu.
Tworząc własne moduły dla Drupala warto pomyśleć o dołączeniu do nich opcjonalnej konfiguracji dla Pathauto. Jest to dość częsta praktyka, spotykana np. w module Group. W efekcie użytkownik otrzymuje domyślne, gotowe szablony aliasów.
Podsumowanie
Pathauto jest niezwykle rozbudowanym modułem, używanym w większości naszych projektów, realizowanych w ramach usług drupalowych. Pozwala na zachowanie spójności adresów URL, uwalnia też edytorów od konieczności ręcznego formowania aliasów. Potwierdzeniem jego przydatności są setki tysięcy instalacji raportowanych w oficjalnych statystykach. Zdecydowanie polecam bliższe zapoznanie się z jego możliwościami.