Tworzenie własnych modułów w Drupalu – krótki przewodnik

Większość dodatkowych fukncji w Drupalu jest dostarczana w postaci modułów. Programiści Drupala tworzą je dla społeczności. Deweloperzy również są w stanie napisać własne, niestandardowe moduły do Drupala. Na czym polega ten proces, jak samemu stworzyć moduł i na co zwracać uwagę? Wszystkiego dowiesz się z poniższego artykułu.

Tworzenie niestandardowego modułu w CMS Drupal

Czym są moduły w Drupalu?

Moduły w Drupalu są fragmentami kodu, rozszerzającymi istniejące funkcje lub tworzącymi nowe. W rdzeniu Drupala możesz znaleźć predefiniowane moduły takie jak Node, Views, Media itp. Więcej na temat modułów piszemy tutaj.

Moduły w Drupalu można podzielić na trzy kategorie:

  1. Rdzenne – dostarczane bezpośrednio podczas procesu instalacji systemu CMS Drupal. Niektóre są instalowane domyślnie, takie jak wyżej wymienione Node lub Views, a niektóre można zainstalować i skonfigurować samodzielnie, jak np. moduł Forum.
  2. Społecznościowe – moduły tworzone przez społeczność Drupala i udostępniane non-profit, dzięki czemu każdy może wykorzystać je w swoim projekcie.
  3. Spersonalizowane – niestandardowe moduły w Drupalu, tworzone przez programistów na potrzeby konkretnego projektu. Mogą służyć do opracowania własnych pluginów, takich jak typy pól, API czy migrowania danych z innych baz lub systemów.

Czym są spersonalizowane moduły w Drupalu?

Spersonalizowane moduły w Drupalu są tworzone przez programistów w celu spełnienia indywidualnych potrzeb danego projektu. To rozwiązania, które nie są dostępne w bazowej wersji CMS Drupal i nie można znaleźć ich w modułach tworzonych przez społeczność. Mogą dziedziczyć pewne cechy lub funkcje corowe Drupala, jak również być w pełni niezależne. Przykładem może być tworzenie integracji z innymi systemami. Należy jednak pamiętać, że niestandardowy rozwój Drupala wiąże się z aktualizowaniem i utrzymaniem własnych modułów względem nowszych wersji systemu oraz języka programowania.

Niestandardowy moduł w Drupalu – krok po kroku

Oto lista zadań, która ułatwi Ci tworzenie modułu niestandardowego w Drupalu. Zalecamy wykonać ją krok po kroku samodzielnie, by utrwalić wiedzę.

  1. Nazwij swój moduł

    Pierwszym krokiem do stworzenia modułu jest wybór nazwy. Moduły niestandardowe można utworzyć na dwa sposoby:

    • ręcznie, tworząc pliki odpowiedzialne za definicję modułu,
    • za pomocą narzędzia Drush, służącego do zarządzania projektem Drupal z poziomu wiersza poleceń.

    Przyjrzyjmy się wymogom dotyczącym nazewnictwa modułów w Drupalu. Krótka nazwa (inaczej nazwa maszynowa), musi:

    • zaczynać się od litery,
    • zawierać tylko małe litery, cyfry i znaki podkreślenia „_”,
    • być unikalna,
    • zawierać mniej niż 50 znaków.

    Poza tym nie powinna zawierać spacji i być żadnym z zarezerwowanych terminów dla klasycznych drupalowych katalogów jak src, assets, templates itd.

    W krótkiej nazwie nie należy korzystać z nazw istniejących modułów, nawet jeśli ich nie używasz, np. Views. Drupal może wtedy źle interpretować instalowane moduły.

    Przyjmijmy, że w ramach nauki, nazwiemy nasz moduł „awesome_chat”. Aby zrobić to ręcznie, należy utworzyć katalog w ścieżce web/modules/custom:

    Tworzenie nowego katalogu

    W przypadku korzystania z narzędzia Drush możesz wykorzystać polecenie „./vendor/bin/drush gen module”, a następnie podać wszystkie wymagane informacje:

    Tworzenie modułu w narzędziu Drush

    W tym przypadku podaliśmy:

    • nazwę modułu – pojawia się w panelu administracyjnym,
    • nazwę maszynową – jest równoznaczna z nazwą katalogu,
    • opis modułu – wyświetla się w panelu administracyjnym,
    • grupę paczek – w jakiej sekcji paczek/modułów w panelu administracyjnym ma się znaleźć Twój moduł - tutaj stworzyliśmy własną grupę „Awesome Package”,
    • zależności – jeżeli korzystasz z innych modułów (niezależnie czy to core, contrib czy custom), powinieneś je tutaj zawrzeć,
    • odpowiedzi na pytania, czy stworzyć konkretne pliki dotyczące modułu. Każda odpowiedź to „nie”, ponieważ na tym etapie ich nie potrzebujesz.
  2. Poinformuj Drupala o istnieniu Twojego modułu

    Aby zainstalować niestandardowy moduł w Drupal CMS, musi być on widoczny dla systemu. Jak możesz zauważyć, podczas generowania modułu za pomocą Drusha, został utworzony plik „awesome_chat.info.yml”. Dzięki niemu moduł jest widoczny, a jednocześnie definiuje jego niektóre właściwości. Zobacz, co się w nim pojawiło:

    Budowanie nowego modułu

    Do wartości name, description i package omówionych wcześniej, dołączyły dwie dodatkowe:

    • type – definiuje typ dostarczanej funkcji. W naszym przypadku jest to „module”, ale gdyby była to customowa skórka do Drupala, wartość nazywałaby się „theme”,
    • core_version_requirement – określa wersję Drupala, dla której moduł będzie dostępny. Zapis “^10”, wskazuje, że niestandardowy moduł Drupal CMS można zainstalować dla wersji 10 i wcześniejszych. Gdyby moduł był dostępny dla wersji 10 oraz 11 (pojawi się w 2024 r.), zapisałbyś go „^10 || ^11”.

    W pliku możesz zdefiniować jeszcze precyzyjniejsze wartości, takie jak wersja PHP, cykl życia, testowe zależności oraz główny formularz konfiguracyjny. Więcej informacji znajdziesz na oficjalnej stronie Drupala.

  3. Czy to już wszystko?

    Zakończyliśmy tworzenie modułu. Tyle wystarczy, aby stworzyć moduł dla Drupala. Jesteśmy jednak na początku drogi. Rozwój modułu wymaga jeszcze trochę pracy. Sprawdź, co możesz wykorzystać, aby napisać własną funkcję.

  4. Pliki bibliotek, uprawnień, akcji oraz menu

    W module możesz stworzyć pliki wprowadzające funkcje do istniejących rozwiązań w Drupalu:

    • awesome_chat.permissions.yml (*.permissions.yml) – możesz w nim określać uprawnienia do konkretnych operacji, które zawrzesz w kodzie modułu. Kluczami są nazwy uprawnień, natomiast tytuły są wyświetlane w panelu administracyjnym;
    Budowa niestandardowego modułu w Drupalu
    • awesome_chat.module (*.module) – jest odpowiedzialny za wykorzystywanie hooków, służących do podpinania się do innych funkcji. Możesz w nim znaleźć definicje szablonów oraz funkcje pomocnicze;
    • awesome_chat.links.menu.yml (*.links.menu.yml) - za pomocą tego pliku jesteś w stanie dodać nową zakładkę do menu administracyjnego. Można to zrobić na kilka sposobów. Poniżej plik utworzony za pomocą Drusha:
    Tworzenie modułu w Drushu
    • awesome_chat.install (*.install) – możesz tu zdefiniować hook odpowiedzialny za wymogi modułu (hook_requirements()) oraz hooki wykonujące aktualizacje lub operacje na bazie danych;
    • awesome_chat.api.php (*.api.php) – definiujesz tutaj własne hooki, dzięki którym umożliwiasz wpięcie się w pisane nowe niestandardowe funkcje w Drupalu.
  5. Stworzenie controllera

    Aby stworzyć controller w module, możesz skorzystać z narzędzia Drush i wykonać polecenie „./vendor/bin/drush gen controller”. Po uzupełnieniu informacji w wierszu poleceń dotyczących nazwy controllera oraz danych ścieżki, otrzymasz dwa pliki:

     

    • web/modules/custom/awesome_chat/awesome_chat.routing.yml
    awesome_chat.first_route:
      path: '/awesome-chat'
      defaults:
        _controller: '\Drupal\awesome_chat\Controller\AwesomeChatController::chat
        _title: 'Awesome chat!!!'
      requirements:
        _permission: 'access content'

    W pliku *.routing.yml definiujesz ścieżki do kontrolerów oraz ustawiasz odpowiednie parametry. W powyższym kodzie ustaliłeś, że ścieżka „awesome_chat.first_route” wskazuje na konkretną metodę „chat” z kontrolera oraz zawiera tytuł podany w parametrze _title. Dostęp do niej mają wszystkie role, które posiadają uprawnienie „access content”. Szczegółowy opis funkcjonowania routingu możesz znaleźć na oficjalnej stronie Drupala.

    • web/modules/custom/awesome_chat/src/Controller/AwesomeChatController.php
    <?php
    
    namespace Drupal\awesome_chat\Controller;
    
    use Drupal\Core\Controller\ControllerBase;
    
    class AwesomeChatController extends ControllerBase {
    
      public function chat() {
        return [
          '#markup' => $this->t('Hello from Awesome Chat!!'),
        ];
      }
    }

     

    Jak możesz zauważyć, wchodząc teraz pod adres /awesome-chat, otwiera się strona z wyświetlanym tekstem z metody „chat”: “Hello from Awesome Chat!!”.

  6. Proces instalacyjny

    Kiedy utworzyłeś moduł oraz zdefiniowałeś określone funkcje, możesz go zainstalować. Sam proces instalacji można przeprowadzić z poziomu panelu administracyjnego, wchodząc pod /admin/modules, wybierając standardowy moduł i zaznaczając proces instalacji lub poprzez polecenie „./vendor/bin/drush en awesome_chat”.

Podsumowanie

Niestandardowe moduły w Drupalu nie powinny być już dla Ciebie zagadką. Poznałeś proces definiowania modułu i możliwości jego rozwoju. Niestandardowy moduł w Drupal CMS umożliwia personalizację i rozszerzenie funkcji, dzięki czemu system, który tworzysz, staje się bardziej elastyczny. Budowanie modułu może być skomplikowane, ale przynosi korzyści w postaci pełnej kontroli nad serwisem.

Rozwój modułu Drupala, od koncepcji po wdrożenie, wymaga przemyślenia strategii i odpowiedzialnego wdrożenia. Jeżeli chciałbyś rozszerzyć swój projekt o nowe funkcje, warto zwrócić się do ekspertów, aby zapewnić sukces projektu.

Szukasz niestandardowych rozwiązań dla swojej witryny?

Skontaktuj się z nami