Друпал 8 имеет отличную от Друпал 7 архитектуру, поэтому процесс написания собственного модуля существенно отличается от принятого в прошлых версиях Друпал. Однако, не все так страшно. Пусть, название нашего модуля будет formatixsample.
Где разместить файлы модуля? Можно выбрать несколько мест: в каталоге /modules, в каталоге /sites/all/modules, либо, при мультисайтинговой конфигурации - в каталоге /sites/mysite/modules.
Мы добавим папку /modules/formatixsample (для ясности я буду всегда указывать абсолютные пути от корня), а в ней создадим файл описания модуля formatixsample.info.yml. Это файл в формате YAML, содержащий всю информацию о нашем модуле:
name: Пример модуля
description: Описание нашего модуля
package: Название группы модулей
type: module
version: 1.0
core: 8.x
Перейдем в раздел "расширить" и в списке обнаружим название нашего модуля:
Опишем системный путь, по которому мы сможем обратиться к нашему модулю. Теперь для этого служит отдельный файл formatixsample.routing.yml, определяющий путь, права доступа, заголовок и контроллер, генерирующий содержимое:
formatixsample.content:
path: '/formatixsample'
defaults:
_controller: 'Drupal\formatixsample\Controller\FirstController::content'
_title: 'Тра ля ля. Это наш модуль.'
requirements:
_permission: 'access content'
Мы указали путь /formatixsample, права доступа - access content (доступ к содержимому - так же как к обычным материалам) и указали на наш контроллер, осуществляющий вывод.
Контроллер нужно поместить в папку /modules/formatixsample/src/Controller нашего модуля в файл FirstController.php. Регистр имен на сервере под управлением linux - важен!
namespace Drupal\formatixsample\Controller;
use Drupal\Core\Controller\ControllerBase;
class FirstController extends ControllerBase {
public function content() {
return array(
'#type' => 'markup',
'#markup' => 'Привет! Это вывод нашего модуля.',
);
}
}
В строке namespace мы описали наше пространство имен, далее - унаследовали свой контроллер от базового ControllerBase, переопределив метод content(). Все просто.
Включим наш модуль в разделе "Расширить" и перейдем по адресу http://yoursite.ru/formatixsample. В браузере отобразится вывод нашего контроллера, а страница будет иметь заданный нами заголовок:
Создадим пункт меню. Если раньше системный путь и меню - были одной сущностью, то в Друпал 8 эти понятия разделены. Пункты меню описываются в специальном файле formatixsample.links.menu.yml, который следует поместить в корневую папку модуля: /modules/formatixsample:
formatixsample.admin:
title: 'Меню нашего модуля'
description: 'Описание пункта меню'
parent: system.admin_config
route_name: formatixsample.content
weight: 9
Кроме понятных заголовка и описания пункта, здесь указаны ссылка на системный путь (formatixsample.content), что мы задали в файле formatixsample.routing.yml, а также - местоположение в меню: system.admin_config и вес 9, определяющий порядок в меню.
Для того, чтобы перестроить меню - очистим кэш Друпала. В результате, в списке появится наш пункт:
В следующих статьях создадим блок и форму. Stay turned!