Оглавление
Magento / Adobe Commerce
Платформа для больших интернет-магазинов: модули, внедрение зависимостей, плагины, макеты и API.
1.Начало работы
- Знакомство с MagentoЧто такое Magento Open Source и Adobe Commerce, для каких магазинов они подходят, что нужно для работы и что будет построено в курсе.
- УстановкаКак создать проект Magento через Composer, запустить установщик setup:install, открыть витрину и панель управления и добавить демонстрационные товары.
- Структура проектаОбзор папок проекта Magento: где лежат свои модули и темы, где ядро, настройки установки, сгенерированные классы, кеш и журналы.
- Основные понятияСловарь новичка в Magento: сайт, магазин и витрина, области frontend и adminhtml, модули, темы и режимы работы.
- Команда bin/magento и режим разработчикаКонсольный инструмент Magento: как запускать bin/magento, какие команды нужны каждый день и как включить режим разработчика.
- Первый модульКак создать модуль Magento вручную: папка в app/code, файлы registration.php и module.xml, включение модуля и проверка его состояния.
2.Страницы витрины
- МаршрутыКак в Magento адрес страницы связывается с модулем: файл routes.xml, frontName, три части адреса и ссылки на свои страницы.
- Контроллеры и действияКласс действия в Magento: где он лежит, метод execute, виды результата — текст, страница, JSON и перенаправление — и чтение параметров запроса.
- МакетыФайлы макета XML в Magento: как имя файла связано с адресом, что такое контейнеры и блоки, как добавить, убрать и передвинуть блок на своей и чужой странице.
- ШаблоныШаблоны phtml в Magento: где они лежат, переменные $block и $escaper, передача значений из макета, экранирование вывода и ссылки.
- Модели представления и блокиКак подготовить данные для шаблона Magento: класс ViewModel, его подключение в макете и использование в шаблоне, а также собственный класс блока.
- Темы, стили и скриптыОсновы оформления в Magento: как создать свою тему, переопределить в ней шаблон, подключить CSS из модуля и добавить скрипт через RequireJS.
3.Зависимости и расширение
- Внедрение зависимостейDependency injection в Magento: зависимости в конструкторе, как Magento подбирает объекты, файл di.xml и предпочтения для интерфейсов.
- Аргументы, виртуальные типы и фабрикиНастройка объектов в di.xml: аргументы конструктора, массивы, виртуальные типы, фабрики для создания новых объектов и прокси для тяжёлых зависимостей.
- ПлагиныПлагины Magento: как изменить результат или аргументы чужого метода без правки ядра, виды before, after и around и регистрация в di.xml.
- События и наблюдателиСобытия в Magento: файл events.xml, класс наблюдателя, данные события, частые события ядра и отправка собственного события.
4.Данные
- Декларативная схемаКак модуль Magento создаёт свои таблицы: файл db_schema.xml, столбцы, ключи и индексы, команда setup:upgrade и белый список db_schema_whitelist.json.
- Модели, ресурсные модели и коллекцииРабота с таблицей из кода Magento: модель, ресурсная модель и коллекция, создание и чтение записей, фильтры и вывод отзывов на странице.
- Интерфейсы данныхСервисные контракты Magento: зачем модулю папка Api, как описать интерфейс данных для отзыва, реализовать его в модели и связать через di.xml.
- РепозиторииРепозиторий в Magento: интерфейс с методами save, getById, getList и deleteById, его реализация и поиск записей через SearchCriteria.
- Заплатки данных и схемыЗаплатки в Magento: как добавить начальные записи классом DataPatchInterface, когда нужна заплатка схемы, как задать порядок и почему заплатка выполняется один раз.
- Товары, категории, покупатели и заказыКак из своего модуля читать и изменять данные ядра Magento: репозитории товаров, категорий, покупателей и заказов и поиск через SearchCriteria.
- EAV и атрибуты товараКак Magento хранит свойства товаров по схеме EAV и как добавить собственный атрибут товара заплаткой данных, а затем прочитать и изменить его значение.
5.Настройки и панель управления
- Настройки модуляНастройки модуля Magento: поля в system.xml, значения по умолчанию в config.xml, чтение через ScopeConfigInterface и уровни сайта и витрины.
- Страница в панели управленияСвоя страница в панели Magento: права в acl.xml, маршрут области adminhtml, пункт меню в menu.xml, действие с ADMIN_RESOURCE и макет страницы.
- Таблица в панели: компоненты интерфейсаКраткое знакомство с UI-компонентами Magento: таблица отзывов в панели управления через файл listing XML и источник данных в di.xml, и что нужно для формы.
6.API и фоновые задачи
- REST APIКак открыть данные модуля Magento через REST: файл webapi.xml, связь адреса с методом репозитория, права доступа и запросы с ключом.
- GraphQLGraphQL в Magento: файл schema.graphqls, собственный запрос и тип, класс-резолвер, возвращающий отзывы, и проверка запроса через curl.
- Консольные командыКак добавить собственную команду в bin/magento: класс команды, регистрация в di.xml, аргументы и параметры, вывод сообщений.
- Задачи по расписаниюCron в Magento: файл crontab.xml, класс задачи, запуск планировщика командами cron:install и cron:run, а также краткое упоминание очередей сообщений.
7.Эксплуатация
- Кеш и индексыКак Magento ускоряет работу: виды кеша и команды cache:clean и cache:flush, кеш страниц целиком, индексы каталога и режимы их обновления.
- ПереводыПеревод модуля Magento: функция __(), файлы i18n в формате CSV, подстановка значений, перевод строк в XML и сбор фраз командой.
- Журналы и отладкаКак искать ошибки в Magento: запись в журнал через LoggerInterface, файлы в var/log и var/report, подсказки шаблонов, журнал запросов к базе.
- Публикация на сервереВыкладка Magento на рабочий сервер: режим production, порядок команд сборки, компиляция, статические файлы, режим обслуживания и проверка перед запуском.