Настав час навчиться писати модулі для Drupal 8, тим більше, що їх написання кардинально відрізняється від написання модулів для 7 гілки Drupal'a.
Перед тим як ми приступимо до роботи, давайте поглянемо на відміну розробки модулів для Drupal 7:
Створіть директорію для модуля
В Drupal 7 все модулі ядра, лежать в паку / modules. а свої модулі та contrib модулі повинні лежати в папці / sites / all / modules або / sites / sitename / modules. В Drupal 8 структура сайту змінилася і все що стосується ядра тепер лежить в папці / core. У корені з'явилася папка / modules. але її ми залишимо як раз для contrib модулів, а свої власні модулі ми будемо по старій пам'яті складати в / sites / all / modules.
Створіть інформаційний yaml файл
Вам потрібно створити інформаційний yaml файл, щоб сказати Drupal'у що ваш модуль існує. Це схожий на створення .info файлу в Drupal 7.
Назва файлу повинна бути машинним ім'ям вашого модуля з розширенням .info.yml. У нашому випадку це буде first_module.info.yml.
Створіть файл .module
В Drupal 7, файл .module необхідний навіть якщо він порожній. У восьмій версії не обов'язково. Я створю цей файл, на випадок якщо в подальшому нам потрібно буде реалізовувати hook'і.
- Створіть в папці first_module, файл з назвою first_module.module;
Створіть src директорію
Далі нам потрібно створити підкаталог в папці нашого модуля, в якому ми будемо зберігати контролери, плагіни, форми, шаблони і тести. Цей підкаталог повинен називатися src. Це дозволить класу контролера додатися в автозавантаження автоматично, відповідно вручну підключати нічого не потрібно.
- Створіть в папці модуля, папку з ім'ям src.
Створіть базовий контролер
Контролери роблять велику частину роботи в MVC додатку.
- Створіть підкаталог Controller в каталозі src;
- В каталозі Controller. створіть файл з ім'ям FirstController.php;
У FirstController.php. ми створимо просте повідомлення «hello world» повідомлення, щоб перевірити що контролер насправді працює.
Створіть користувацький блок
На поточний момент у нас є пункт меню і маршрут, по якому відображається заголовок і рядок «Hello world». Давайте зробимо щось по серйозніше, а саме створимо свій блок в модулі.
Для початку нам потрібно створити новий плагін. Модулі - це нововведення Drupal 8, і вони забезпечують замінні частини функціональності.
- Створіть папку Plugin в каталозі src вашого модуля. Тут будуть зберігатися всі плагіни для модуля;
- В папці Plugin створіть папку Block. Block - це Plugin Type;
- А всередині папки Block. створіть файл з ім'ям HelloBlock.php;
У цьому файлі нам потрібно визначити простір імен і клас, який буде наслідувати клас BlockCase.
Наступним кроком потрібно успадкувати документацію з базового класу і додати метод build (). який буде повертати вміст блоку.
Повний код файлу HelloBlock.php.
виведіть блок
Щоб вивести блок в регіон перейдіть на сторінку адміністрування блоків. Навпаки, регіону в якому ви хочете вивести блок, натисніть на кнопку «Розташувати блок».
У модальному вікні ви можете побачите всі доступні на поточний момент блоки. Знайдіть наш Hello block і навпроти нього натисніть на кнопку «Розмістити блок».
Після цього з'явиться форма налаштувань блоку. Просто натисніть зберегти.
Поверніться на сайт і насолоджуйтеся результатом.
файлова структура
В результаті у вас повинна вийти наступна структура файлів:
висновок
У цій статті ми створили простий модуль, в якому є контролер, який повертає просту рядок при зверненні до URL. Також ми створили простий блок. Не переживайте якщо на даному етапі вам не все зрозуміло, просто продовжуйте практикуватися.
Ще хотілося б відзначити, що в цій статті написано про те як це все робиться вручну. Більшу частину роботи можна автоматизувати, за допомогою спеціальних інструментів таких як Drush і Drupal Console. У статті Введення в Drush і Drupal Console розповідається як використовувати ці інструменти.