Jak zaplanować publikację w Drupalu? Przegląd modułu Scheduler
Przy tworzeniu contentu na stronę internetową nieraz zachodzi potrzeba zaplanowania jego publikacji w czasie. Robienie tego manualnie może być jednak czasochłonne i niewygodne. Z pomocą przychodzi nam wtedy Scheduler — moduł Drupala, który pomoże nam zautomatyzować ten proces. Używanie go umożliwi nam, między innymi, ustalenie publikacji contentu na konkretny dzień oraz godzinę.
Modułu Scheduler - daty
Moduł został wydany 23 lipca 2006 roku, a jego najnowsza aktualizacja pojawiła się 19 lipca 2021 roku. Scheduler posiada zarówno wersję na Drupala 7, jak i 8, a jego najnowsza aktualizacja jest kompatybilna również z Drupalem 9.
Popularność modułu
Moduł jest aktualnie używany na ponad 85 tysięcy stron, z czego około 44 tysiące to strony na Drupalu 7, a ponad 37 tysięcy - strony na Drupalu 8.
Źródło: Drupal.org
Autorzy modułu
Scheduler został opublikowany przez Erica Schaefera, jednak lista osób pracujących do tej pory nad modułem jest bardzo długa i niemożliwa do całkowitego zaktualizowania, gdyż nie znamy wszystkich użytkowników, którzy przyczynili się do jego rozwoju.
Do czego służy moduł Scheduler?
Jak zaznaczyłem we wstępie, moduł służy do planowania publikacji treści z wyprzedzeniem. Scheduler posiada również funkcję planowania cofnięcia publikacji. Jeśli zajdzie taka potrzeba — na przykład dla wydarzeń, o których informacja po ich zakończeniu będzie zbędna — możemy zlecić modułowi nie tylko wstawienie treści, ale także usunięcie jej z naszej strony internetowej w konkretnym momencie.
Scheduler dostarcza trzy nowe uprawnienia, dzięki którym tylko wybrane przez nas role będą posiadały opcję planowanego publikowania. Do listy możliwości możemy także dołączyć tzw. Lightweight cron, którego konfiguracja optymalizuje zużycie zasobów. Lightweight cron to propozycja twórców, aby cron odpowiedzialny za publikowanie i cofanie publikacji był wywoływany oddzielnie, bez potrzeby inicjowania wszystkich innych zadań, jak to zwykle dzieje się w Drupalu.
Unboxing
Instalacja przebiega standardowo. Zalecam użycie Composera.
composer require drupal/scheduler
Uprawnienia
Pod adresem
/admin/people/permissions#module-scheduler
znajdziemy listę uprawnień, które dostarcza moduł:
Administer scheduler Ta opcja umożliwia konfigurowanie modułu Scheduler, czyli wszystko to, co jest dostępne pod adresem
/admin/config/content/scheduler
(opis wszystkich funkcji znajdziesz w kolejnym akapicie).
Scheduler content publication
Nadanie tego uprawnienia pozwala danej roli na ustawienie planowanej publikacji i planowanego cofnięcia publikacji.
View scheduled content list
Scheduler dostarcza widok, który możemy zobaczyć na
/admin/content/scheduled
Nadanie tego uprawnienia pozwala na dostęp do tego widoku.
Ustawienia
Pod adresem
/admin/config/content/scheduler
znajdziemy wszystkie globalne ustawienia modułu. Dodatkowo Scheduler można skonfigurować per content type. Poniżej rozkładamy opcje globalne na części pierwsze.
Allow users to enter only a date and provide a default time
Pozwala użytkownikom, którzy mają uprawnienie do konfigurowania planowanego publikowania treści, na określenie jedynie daty publikacji. Godzina w przypadku zaznaczenia tej opcji będzie predefiniowana i możliwa do zdefiniowania w polu Default time.
Hide the second
Zaznaczenie tej opcji powoduje wyłączenie możliwości ustawienia sekund podczas planowania publikacji treści.
Lightweight cron
Jak zaznaczyłem wcześniej, Drupal domyślnie wywołuje wszystkie zadania cron co pewien okres. Do sprawdzania, która treść wymaga publikacji i cofnięcia publikacji, moduł Scheduler korzysta z zadania cron, które powinno być wywoływane co kilka minut (1 do 5). Konfigurowanie Drupala, aby wywoływał wszystkie zadania cron co minutę nie jest zbyt dobrym pomysłem, biorąc pod uwagę optymalizację. Z tego powodu twórcy przedstawili możliwość wywoływania pojedynczego zadania cron w takim odstępie czasu, jaki nam odpowiada. Aby to zrobić, należy na naszym serwerze dodać nowe zadanie cron wywoływane co pewien okres. Oto przykład zadania cron, które jest wywoływane co minutę:
* * * * * wget -q -O /dev/null "https://tesd9.lndo.site/scheduler/cron/{access-key}
Pod adresem
/admin/config/content/scheduler/cron
znajdziemy ustawienia lightweight cron. Możemy tam włączyć logowanie aktywacji i ukończenia zadania cron, zmienić access-key oraz wywołać crona manualnie.
Content type
Przedstawię to na podstawie domyślnego rodzaju contentu - Article - dostępnego w domyślnym profilu Drupala. Przechodząc pod adres
/admin/structure/types/manage/{content-type-machine-name}
zauważymy nową zakładkę Scheduler. W tym miejscu znajdują się wszystkie opcje konfiguracyjne z modułu, które można ustawiać dla każdej encji.
Enable scheduled publishing/unpublishing for this content type
Włącza lub wyłącza możliwość ustawienia planowanej publikacji i/lub planowanego cofnięcia publikacji.
Change content creation time to match the scheduled publish time
Zmienia datę w polu creation time na tą wybraną jako data planowanej publikacji.
Require scheduled publishing/unpublishing
Zaznaczenie tej opcji powoduje wymaganie ustawienia planowanej publikacji i/lub planowanego cofnięcia publikacji.
Create a new revision on publishing/unpublishing
Tworzy nową rewizję przy planowanej publikacji i/lub planowanym cofnięciu publikacji.
Action to be taken for publication dates in the past
Pozwala na określenie co nastąpi, gdy edytor wybierze datę publikacji wcześniejszą niż aktualna. Możemy tutaj wybrać jedną z trzech opcji:
- Wyświetl błąd informujący o wybraniu daty wcześniejszej niż aktualna (w tym przypadku content nie jest publikowany).
- Opublikuj content natychmiast po zapisaniu.
- Zaplanuj publikację contentu przy najbliższym wywołaniu zadania cron.
Użycie modułu
Teraz wyobraźmy sobie, że artykuł musi zostać opublikowany 01.09.2021 o godzinie 9:30. Publikacja powinna zostać cofnięta tydzień później o tej samej porze.
Postępujemy analogicznie do tego, co robiliśmy w poprzednim przykładzie, lecz tym razem musimy również określić Unpublish on na 08.09.2021 o 9:30.
Może Cię także zainteresować: Jak uprościć formularze edycji w Drupalu - przegląd modułu Simplify
Integracje
Scheduler posiada integracje z kilkoma modułami Drupala.
- Jeśli używamy modułu Content Moderation, musimy włączyć sub-moduł Content Moderation Integration.
- Dostarcza dodatkowe warunki, akcje i eventy dla modułu Rules.
- Posiada też integrację z automatycznym generowaniem testowego contentu dostarczonego przez moduł Devel Generate. Scheduler może automatycznie dodawać datę planowanej publikacji oraz datę planowanego cofnięcia publikacji.
- Tworzy nowe tokeny dla modułu Token, zawierające datę planowanej publikacji i planowanego cofnięcia publikacji.
Przyszłość modułu
Grupa odpowiedzialna za Scheduler zapowiedziała, że w następnej kolejności będzie wypuszczona wersja 2.0 modułu. Scheduler otrzyma w niej wsparcie dla innych encji niż node, jak na przykład Media, Commerce Products oraz innych. Programiści zapowiedzieli również, że eventy wywoływane przez moduł Scheduler oraz jego integrację z modułem Rules, będą od teraz wywoływane po zapisaniu encji, a nie przed, tak jak do tej pory. Progres w tworzeniu nowej wersji można śledzić na stronie związanej z modułem.
Moduł Scheduler - podsumowanie
Scheduler jest modułem, który znacząco ułatwia zaplanowane publikowanie treści na stronie internetowej. Jego używanie automatyzuje ten proces oraz sprawia, że pracę wymaganą do opublikowania treści można wykonać w każdej chwili, nie martwiąc się później o goniący nas czas tuż przed samą publikacją. W Droptica również używamy Schedulera, jeżeli istnieje potrzeba zaplanowania publikacji z wyprzedzeniem. Moduł ten jest niezwykle popularny wśród użytkowników Drupala, przez co ciągle jest rozwijany. Efektem jego popularności jest powstająca właśnie wersja 2.0. Nasz zespół programistów Drupala rekomenduje wykorzystanie modułu Scheduler do planowania publikacji z wyprzedzeniem lub do wstawiania treści na określony czas.