Знакомство с Magento
Magento — платформа для интернет-магазинов, написанная на PHP. Она рассчитана на большие каталоги: тысячи товаров, несколько сайтов и языков, сложные цены, склады и скидки. Всё это уже есть в ядре, а разработчик дополняет магазин своими модулями.
Open Source и Adobe Commerce
| Название | Что это |
|---|---|
| Magento Open Source | Бесплатная версия с открытым кодом |
| Adobe Commerce | Платная версия: те же основы плюс дополнительные возможности для крупного бизнеса |
Модули для обеих версий пишут одинаково, поэтому всё сказанное в курсе относится к обеим.
Версия
Курс рассчитан на Magento 2.4 (выпуски 2.4.7 и 2.4.8). Код из уроков использует возможности PHP 8, например объявление свойств прямо в конструкторе.
Что понадобится
| Программа | Зачем |
|---|---|
| PHP 8.2 или новее | На нём работает платформа; точные версии зависят от выпуска |
| Composer 2 | Скачивает Magento и сторонние пакеты |
| MySQL 8 или MariaDB | База данных |
| OpenSearch 2 | Поиск по каталогу; без него магазин не установится |
| Nginx или Apache | Веб-сервер |
Точный список версий для каждого выпуска есть в разделе System requirements официальной документации. Проще всего поднять всё это в Docker.
Чем Magento отличается от других систем
Новичка обычно удивляют три вещи:
- Много настроек в XML. Адреса, страницы, таблицы, права — всё описывается файлами XML внутри модуля.
- Объекты не создают словом
new. Класс перечисляет нужное в конструкторе, а Magento передаёт это сам — так называемое внедрение зависимостей. - Часть классов Magento генерирует автоматически и складывает в папку
generated.
Взамен вы получаете главное свойство платформы: почти любое поведение ядра можно изменить из своего модуля, не трогая чужие файлы.
Что будет построено в курсе
Через весь курс проходит один пример — модуль Acme_Hello в папке app/code/Acme/Hello. Сначала он покажет страницу приветствия, а затем научится хранить отзывы о товарах: получит свою таблицу, страницу в панели управления, настройки, API и команду для консоли.
app/code/Acme/Hello/
├── registration.php
└── etc/
└── module.xmlТак модуль будет выглядеть после урока «Первый модуль». В каждом следующем уроке к дереву добавляются новые файлы.
Частая ошибка
Исправлять файлы ядра в папке vendor/magento нельзя: правки пропадут при первом же обновлении, а найти причину странного поведения потом будет очень трудно. Любое изменение делают из своего модуля или темы — этому и посвящён курс.