Оглавление
Drupal
CMS для сложных сайтов: свои модули, маршруты, формы, сущности, блоки и шаблоны Twig.
1.Начало работы
- Что такое DrupalЧто такое Drupal, чем он отличается от фреймворка, что делают в панели, а что пишут в модуле, и что будет построено в курсе.
- УстановкаУстановка Drupal через Composer: создание проекта, установка сайта командой Drush, запуск встроенного сервера и вход в панель.
- Структура проектаПапки проекта Drupal: web, core, modules, themes, sites и vendor — что в них лежит и куда класть свой код.
- DrushКонсольная программа Drush: как её запускать, основные команды, очистка кеша и установка готовых модулей.
- Основные понятияСловарь Drupal для разработчика: материалы, типы материалов, поля, таксономия, блоки, представления и сущности.
2.Модуль и страницы
- Первый модульСоздание модуля Drupal: папка в modules/custom, файл info.yml, включение модуля и проверка, что он работает.
- МаршрутыФайл routing.yml в модуле Drupal: имя маршрута, адрес, контроллер, заголовок и условие доступа; как сослаться на маршрут.
- КонтроллерыКонтроллер в модуле Drupal: где лежит класс, как он связан с маршрутом, что возвращает метод и как вернуть JSON или перенаправление.
- Параметры и доступ к маршрутуПараметры в адресе маршрута Drupal, их проверка, автоматическая загрузка материала и условия доступа в разделе requirements.
- Ссылки меню, вкладки и кнопки действийКак показать страницу модуля Drupal в меню: файлы links.menu.yml, links.task.yml и links.action.yml.
3.Вывод и оформление
- Массивы выводаМассивы вывода в Drupal: свойства с решёткой, вложенные элементы, готовые элементы — список, таблица, ссылка — и безопасный вывод текста.
- Шаблоны Twig и hook_themeСвой шаблон в модуле Drupal: объявление через hook_theme в файле module, файл в папке templates, вывод из контроллера и синтаксис Twig.
- Библиотеки: стили и скриптыПодключение CSS и JavaScript в модуле Drupal: файл libraries.yml, свойство attached, функция attach_library и поведения Drupal.behaviors.
- Темы и переопределение шаблоновСвоя тема Drupal: создание командой generate-theme, файл info.yml, переопределение шаблонов, варианты имён и функции preprocess.
- Перевод строкПереводимые строки в модуле Drupal: функция t, подстановки, множественное число, класс TranslatableMarkup и перевод в шаблонах Twig.
4.Логика модуля
- ХукиХуки Drupal: что это такое, файл module, реакция на сохранение материала, изменение чужой формы и хуки в классах в Drupal 11.
- Сервисы и внедрение зависимостейСервисы Drupal: свой класс в папке src, регистрация в services.yml, получение сервиса в контроллере через create и в хуках через класс Drupal.
- События и подписчикиСобытия Symfony в Drupal: класс-подписчик в папке src/EventSubscriber, регистрация в services.yml с меткой event_subscriber и приоритеты.
- ФормыForm API в Drupal: класс формы в папке src/Form, методы buildForm, validateForm и submitForm, маршрут формы и сообщения посетителю.
- КонфигурацияНастройки модуля Drupal: значения по умолчанию в config/install, схема в config/schema, чтение и запись, отличие конфигурации от состояния.
- Форма настроекСтраница настроек модуля Drupal: класс на основе ConfigFormBase, маршрут в панели, ссылка в меню и кнопка Настроить в списке модулей.
- Права доступаСвои права в модуле Drupal: файл permissions.yml, проверка в маршруте через _permission, проверка в коде через currentUser и доступ к материалу.
5.Данные
- Сущности: загрузка и поляEntity API в Drupal: хранилище сущностей, загрузка материала по номеру, чтение значений полей, ссылки на другие сущности, изменение и сохранение.
- Запросы к сущностямПоиск материалов в Drupal через entity query: условия, сортировка, ограничение, вывод списка статей, создание и удаление сущностей.
- Свой блокБлок в модуле Drupal: класс в папке src/Plugin/Block с атрибутом Block, метод build, размещение в области темы, настройки блока и сервисы.
- ПлагиныПлагины Drupal: как система находит классы по папке и атрибуту, атрибуты и аннотации, пример форматтера поля и другие виды плагинов.
- База данныхСвоя таблица в модуле Drupal: hook_schema в файле install, вставка из формы, выборка, изменение и удаление через построитель запросов.
- КешCache API в Drupal: свойство cache в массиве вывода, метки, контексты и срок жизни, кеширование собственных данных и сброс по метке.
6.Развитие проекта
- JSON:APIДанные Drupal в формате JSON: модуль JSON:API из ядра, адреса коллекций и отдельных материалов, фильтры, сортировка и включение записи.
- Свои команды DrushКоманда Drush в модуле Drupal: класс в папке src/Drush/Commands, атрибуты Command, Argument и Option, вывод в терминал.
- Cron и очередиЗадачи по расписанию в Drupal: hook_cron в файле module, запуск планировщика, очередь задач и обработчик QueueWorker.
- Перенос конфигурации и размещениеУправление конфигурацией Drupal: выгрузка и загрузка командами Drush, папка синхронизации, порядок работы и шаги размещения на сервере.
- Обновления: hook_update_NОбновления модуля Drupal: функции hook_update_N в файле install, изменение таблицы и настроек, команда drush updb и обновление ядра через Composer.