Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Оглавление

Что такое 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.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.