Что такое Drupal
Drupal — система управления сайтом (CMS) для сложных проектов: порталов, университетов, интернет-изданий. Сразу после установки в нём есть панель администратора, пользователи, материалы и меню. Всё, чего не хватает, добавляют модулями — готовыми или своими.
Версия
Курс написан для Drupal 11. Ему нужен PHP 8.3 или новее. Почти весь код курса работает и в Drupal 10.3; отличия отмечены в тексте.
Современный Drupal построен на компонентах Symfony: в нём есть маршруты, контроллеры, сервисы и шаблоны Twig. Поэтому писать модуль — почти то же, что работать с фреймворком.
Панель и код
Работа с Drupal делится на две части.
| Что нужно сделать | Где это делают |
|---|---|
| Добавить тип материала «Статья» с полями | В панели, без кода |
| Вывести список материалов с фильтром | В панели, модуль Views |
| Раздать права ролям | В панели |
| Свой адрес со своей логикой | В модуле: маршрут и контроллер |
| Своя форма с проверкой | В модуле: класс формы |
| Изменить поведение чужого модуля | В модуле: хук |
| Изменить разметку страницы | В теме: шаблон Twig |
Тот, кто настраивает сайт в панели, — сборщик сайта. Тот, кто пишет модули, — разработчик. Курс про второе, но первые уроки дают и необходимый минимум первого.
Где живёт ваш код
Свой код пишут в двух местах:
web/modules/custom/ ваши модули
web/themes/custom/ ваши темы оформленияМодуль отвечает за логику: адреса, формы, данные. Тема — за внешний вид. Ядро и чужие модули не изменяют никогда: их обновляет Composer, и правки пропадут.
Что будет построено
Сквозной пример курса — модуль blog в папке web/modules/custom/blog. Шаг за шагом в нём появятся:
- страница
/blogсо списком статей; - свой шаблон и стили;
- форма подписки на новые статьи;
- страница настроек модуля;
- блок «Свежие статьи»;
- своя таблица в базе данных и команда для терминала.
Каждый урок добавляет в модуль один файл или меняет один уже существующий. В начале каждого примера указан путь к файлу.
Что нужно знать заранее
Нужен PHP на уровне классов, пространств имён и Composer. Формат YAML, в котором Drupal хранит описания, прост: это пары «ключ: значение», вложенность задают отступы в два пробела.
Частая ошибка
Начинающие разработчики пишут код там, где хватило бы настройки: создают свою таблицу для статей, хотя в Drupal уже есть материалы с полями, или пишут свой список, хотя его собирает Views. Прежде чем открывать редактор, проверьте, не решается ли задача в панели или готовым модулем с drupal.org.