Moduł rules przedstawiony jako seria kół zębatych

Automatyczne akcje warunkowe w Drupal 8

10.01.2019

Zautomatyzuj działania na swojej drupalowej stronie. Dzięki temu strona stanie się jeszcze bardziej niezależna od Ciebie.

Automatyczne wysyłanie maili, publikowanie treści w określonym czasie i przekierowania po spełnieniu określonych warunków to tylko część z funkcjonalności modułu Rules.

Rules to narzędzie, które pozwala na definiowanie automatycznych akcji warunkowych, wywoływanych przez różnego rodzaju zdarzenia.

Co może być taką automatyczną akcją? Na przykład:

  • przekierowanie użytkownika po zalogowaniu,
  • wysłanie e-maila po dodaniu zawartości,
  • opublikowanie treści w określonym czasie.

Moduł opiera się na regule Event – Condition – Action, czyli Zdarzenie – Warunek – Akcja, z tym, że WARUNEK nie musi wchodzić w skład tego schematu.

Przykładowy schemat:

  1. Użytkownik dodaje wpis - zdarzenie.
  2. Typ dodawanego wpisu to Artykuł - warunek.
  3. Powiadom mailowo admina o tym, że ktoś dodał wpis - akcja.

Instalacja i konfiguracja modułu Rules

Obecnie (styczeń 2019) moduł jest w wersji alpha4, co znaczy, że część jego funkcjonalności może nie działać poprawnie. Mogą też pojawiać się błędy.
Na potrzeby wpisu wykorzystaliśmy wersję DEV modułu.

Poniższy przykład działa i został przetestowany w konfiguracji przedstawionej poniżej:
Drupal : 8.6.5
Rules : 8.x-3.x-dev
Typed Data : 8.x-1.0-alpha2

Pobierz moduły i rozpakuj w katalogu /modules/contrib
Rules - https://www.drupal.org/project/rules
Typed Data - https://www.drupal.org/project/typed_data

Jeżeli będziesz tworzył reguły, które w warunkach będą miały role użytkowników, np. gdy po zalogowaniu, będziesz chciał przekierować użytkowników z rolą „administrator” na daną stronę, należy dodać patch: https://www.drupal.org/files/issues/2816157-10.patch do modułu Rules. 
W przyszłości pewnie nie będzie on potrzebny, ale obecnie jest wymagany do poprawnego działania warunku zawierającego role użytkownika.

Jak dodawać patche - https://www.drupal.org/patch/apply.

Tworzenie i testowanie reguł

Krok po kroku pokażemy jak dodać nową regułę: Przekierowanie na stronę /admin/people po zalogowaniu użytkownika z rolą administratora.

Dodaj nowa regułę - /admin/confg/workfow/rules.

Add new rule

Wypełnij pola:

  • W polu label nazwij swoją regułę.
  • W polu wyboru wybierz zdarzenie (event), na które będzie reagowała Twoja reguła. W naszym przypadku będzie to User has logged in – czyli użytkownik się zalogował.

Creating rule

Dodaj warunek.

Add condition

Wybierz odpowiednią wartość, w naszym przypadku będzie to User has role(s) – użytkownik ma role.

Rule condition

Teraz najtrudniejsza część tworzenia reguły, czyli wybór odpowiednich obiektów, na których ma działać warunek. Tutaj trzeba uważać gdyż, mimo walidacji tego pola, czasami możemy ustawić złe wartości, które będą powodowały błędy.
Pole w sekcji USER przełącz na tryb wyboru z pola auto uzupełniającego. Switch to data selection

Warunek odnosi się do użytkownika, gdyż mamy sprawdzić jego rolę, w polu wpisujemy account.

W sekcji ROLES wpisujemy role, dla których ma być spełniony warunek. Należy wpisać nazwę maszynową. Możesz ją podejrzeć na stronie /admin/people/roles edytując wybraną rolę. W naszym przypadku będzie to: administrator. Możesz dodać więcej ról, wpisując każdą w nowej linii.

W sekcji MATCH ROLES,  jeżeli wybrałeś więcej niż jedną rolę, możesz ustawić czy użytkownik musi mieć każdą z tych ról (AND) czy którąkolwiek (OR)

W sekcji NEGATE możesz zaznaczyć czy warunek ma być spełniony, gdy powyższe ustawienia NIE SĄ SPEŁNIONE, czyli akcja wykona się, gdy zaloguje się każdy użytkownik, z wyjątkiem tych, którzy mają rolę administratora.

Creating condition

Dodaj akcję.

Add new action

Wybierz Page redirect z sekcji System.

Choose action

Wpisz adres (wewnętrzny lub zewnętrzny), na który przekierować użytkownika po zalogowaniu.

Redirect url

Zapisz i przetestuj regułę.

Aby reguła działała, wyczyść cache w Drupalu.

Teraz zaloguj się i sprawdź, czy przekierowanie działa.

Przekierowanie dla roli admina nie działa... Co zrobić?!

PHP wyświetla błąd:

  • upewnij się, że masz wgrany patch, o którym mowa jest wyżej,
  • upewnij się czy w sekcji USER w warunku reguły użyty jest odpowiedni obiekt - account.

Nie przekierowuje po zalogowaniu:

  • sprawdź czy reguła jest zapisana poprawnie,
  • wyczyść cache w Drupalu,
  • sprawdź czy nazwa roli w warunku jest poprawna.

Odkrywaj możliwości modułu Rules

Moduł Rules to naprawdę mocne narzędzie, dzięki któremu można budować złożone reguły, które zautomatyzują Twoją stronę.

Jeżeli masz pomysł na wykorzystanie tego narzędzia w swoim projekcie, ale potrzebujesz pomocy, to skontaktuj się z nami.

Porozmawiajmy o Twoich projektach

Napisz do nas