Drupal 8 - tworzenie modułu podstawy
W artykule przedstawię wstęp do tworzenia modułów w Drupalu 8. Stworzymy prosty moduł tworzący drupalową stronę po stronie frontendu. Tworzenie modułów w Drupalu 8 ma parę istotnych zmian w stosunku do Drupala 7. W Drupalu 7 podstawowe moduły są umieszczane w katalogu /modules, a moduły niestandardowe i dodatkowe należy umieścić w katalogu sites/all/modules lub sites/sitename/modules. W Drupalu 8 podstawowe moduły przechodzą do katalogu /core, więc możesz umieścić swoje moduły dodatkowe i niestandardowe w katalogu /modules.
name: My Module description: My first module package: Custom type: module version: 1.0 core: 8.xWięcej o plikach info możesz przeczytać na stronie Drupala. W Drupalu 7 plik .module był obowiązkowy, teraz jest opcjonalny. W katalogu modułów musimy stworzyć podkatalog dla kontrolerów, wtyczek, formularzy, szablonów i testów. Ten podkatalog powinien nazywać się src. Pozwoli to klasie kontrolera na automatyczne ładowanie, co oznacza, że nie musisz jawnie dołączać pliku klasy. Teraz stworzymy pierwszy kontroler. Utwórz folder w src o nazwie Controller. W tym folderze utwórz plik o nazwie FirstController.php. W FirstController.php utworzymy prostą wiadomość "hello world" wyświetloną na drupalowej podstronie.
<?php /** * @file * Contains \Drupal\my_module\Controller\FirstController. */ namespace Drupal\my_module\Controller; use Drupal\Core\Controller\ControllerBase; class FirstController extends ControllerBase { public function content() { return array( '#type' => 'markup', '#markup' => t('Hello world'), ); } }Kontroler, który stworzyliśmy powyżej, na tym etapie nic nie zrobi. Musimy utworzyć routing, aby mógł zostać wykonany. Utwórz plik o nazwie my_module.routing.yml w głównym katalogu naszego modułu o następującej treści.
my_module.content: path: '/hello' defaults: _controller: 'Drupal\my_module\Controller\FirstController::content' _title: 'Hello world' requirements: _permission: 'access content'Włącz moduł w panelu administracyjnym. Jeśli teraz przejdziesz do /hello, zobaczysz komunikat Hello World. Routing działa i zwraca zawartość z kontrolera. Ale aby dotrzeć do treści, musisz znać adres URL. Aby uczynić to bardziej użytecznym, musimy dodać go do systemu menu Drupala. Aby to zrobić, musisz utworzyć plik menu.yml. Utwórz zatem w głównym katalogu modułu plik my_module.links.menu.yml.
my_module.admin: title: 'My module settings' description: 'A basic module to return hello world' parent: system.admin_config_development route_name: my_module.content weight: 100Wyczyść cache, a następnie powinieneś zobaczyć pozycję menu w konfiguracji -> development. Gratulacje stworzyłeś właśnie pierwszy drupalowy moduł!