.

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.

Statystyki użycia modułu Scheduler, służącego do zaplanowania publikacji na stronie w Drupalu

Ź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
Scheduler composer

 

Uprawnienia

Pod adresem

/admin/people/permissions#module-scheduler

znajdziemy listę uprawnień, które dostarcza moduł:

Uprawnienia dostępne w module Scheduler

 

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.

Globalne ustawienia modułu Scheduler

 

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.

Określenie daty publikacji wybranej przez użytkownika treści w module Scheduler

 

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.

Ustawienia Lightweight cron w module Scheduler

 

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.

W zakładce Scheduler, związanej z rodzajami contentu, znajdziemy wszystkie opcje konfiguracyjne dla 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.

Display scheduling options as

Zmienia sposób, w który wyświetlają się opcje modułu Scheduler podczas tworzenia i edycji contentu. Dp wyboru mamy dwie opcje - Vertical tab oraz Separate fieldset.

Vertical tab

Vertical tab jest jedną z możliwości wyświetlania opcji modułu Scheduler

 

Separate fieldset

Separate fieldset jest jednym ze sposobów wyświetlania opcji modułu Scheduler

 

Expand fieldset or vertical tab

Pozwala określić, czy podczas tworzenia i edycji contentu pole dostarczane przez Schedulera powinno być rozwinięte.

Show message

Zaznaczenie tej opcji powoduje wyświetlenie informacji o ustawieniu planowanej publikacji i planowanym cofnięciu publikacji po zapisie contentu.

Powiadomienie o zaplanowanej publikacji z modułu Scheduler

 

Użycie modułu

Załóżmy, że nasz artykuł musi zostać opublikowany 01.09.2021 o godzinie 9:30. Publikacja nie ma być cofnięta.

Podczas tworzenia artykułu należy wybrać ustawić opcję Publish on na 01.09.2021 9:30, a opcję Unpublish on należy zostawić pustą. W tym przypadku dla encji Article opcja Require scheduled unpublishing musi być wyłączona.

Opcje planowania publikacji na konkretną datę

 

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.

Ustalanie godziny publikacji artykułu i cofnięcia publikacji w Schedulerze

 

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.

3. Najlepsze praktyki zespołów programistycznych