Пишемо свій модуль для drupal 8

Пишемо свій модуль для drupal 8

Настав час навчиться писати модулі для 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» повідомлення, щоб перевірити що контролер насправді працює.

  • Почистіть кеш сайту. Після цього в розділі «Конфігурація» -> «Розробка», ви можете побачити щойно створений пункт меню.
  • Натисніть на нього і ви перейдете на тільки що створену нами сторінку / first.
  • Створіть користувацький блок

    На поточний момент у нас є пункт меню і маршрут, по якому відображається заголовок і рядок «Hello world». Давайте зробимо щось по серйозніше, а саме створимо свій блок в модулі.

    Для початку нам потрібно створити новий плагін. Модулі - це нововведення Drupal 8, і вони забезпечують замінні частини функціональності.

    • Створіть папку Plugin в каталозі src вашого модуля. Тут будуть зберігатися всі плагіни для модуля;
    • В папці Plugin створіть папку Block. Block - це Plugin Type;
    • А всередині папки Block. створіть файл з ім'ям HelloBlock.php;

    У цьому файлі нам потрібно визначити простір імен і клас, який буде наслідувати клас BlockCase.

    Наступним кроком потрібно успадкувати документацію з базового класу і додати метод build (). який буде повертати вміст блоку.

    Повний код файлу HelloBlock.php.

    виведіть блок

    Щоб вивести блок в регіон перейдіть на сторінку адміністрування блоків. Навпаки, регіону в якому ви хочете вивести блок, натисніть на кнопку «Розташувати блок».

    У модальному вікні ви можете побачите всі доступні на поточний момент блоки. Знайдіть наш Hello block і навпроти нього натисніть на кнопку «Розмістити блок».

    Після цього з'явиться форма налаштувань блоку. Просто натисніть зберегти.

    Пишемо свій модуль для drupal 8

    Поверніться на сайт і насолоджуйтеся результатом.

    Пишемо свій модуль для drupal 8

    файлова структура

    В результаті у вас повинна вийти наступна структура файлів:

    Пишемо свій модуль для drupal 8

    висновок

    У цій статті ми створили простий модуль, в якому є контролер, який повертає просту рядок при зверненні до URL. Також ми створили простий блок. Не переживайте якщо на даному етапі вам не все зрозуміло, просто продовжуйте практикуватися.

    Ще хотілося б відзначити, що в цій статті написано про те як це все робиться вручну. Більшу частину роботи можна автоматизувати, за допомогою спеціальних інструментів таких як Drush і Drupal Console. У статті Введення в Drush і Drupal Console розповідається як використовувати ці інструменти.

    Схожі статті