Encodera

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

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

Оглавление

Основные понятия

В документации и в коде Magento постоянно встречаются одни и те же слова: витрина, область, модуль, тема, режим. Без них трудно читать следующие уроки, поэтому разберём их заранее. Кода здесь почти нет — только смысл.

Сайт, магазин, витрина

Одна установка Magento может обслуживать несколько магазинов. Для этого есть три уровня:

УровеньВ кодеЧто различается
СайтwebsiteДомен, цены, покупатели, способы оплаты
Магазинstore (группа)Корневая категория каталога
Витринаstore viewЯзык и оформление

Пример: компания продаёт одежду на example.com и технику на tech.example.com — это два сайта. У сайта одежды есть английская и немецкая версии — это две витрины.

Сразу после установки существует по одному элементу каждого уровня. Управляют ими в панели: «Магазины → Все магазины» (Stores → All Stores).

Эти уровни важны для разработчика: настройку модуля или название товара можно задать отдельно для каждой витрины. В коде текущую витрину даёт Magento\Store\Model\StoreManagerInterface.

Области

Область (area) — часть приложения со своими настройками и страницами. Один и тот же модуль может вести себя по-разному в каждой из них.

ОбластьЧто это
frontendВитрина, которую видит покупатель
adminhtmlПанель управления
webapi_restREST API
graphqlGraphQL API
crontabЗадачи по расписанию

Область видна в путях файлов. Настройки из etc/frontend/routes.xml действуют только на витрине, из etc/adminhtml/routes.xml — только в панели, а файл прямо в etc действует везде. Шаблоны витрины лежат в view/frontend, шаблоны панели — в view/adminhtml.

Модуль

Модуль — папка с кодом и настройками, которая решает одну задачу: каталог, корзина, отзывы. Имя модуля состоит из поставщика и названия: Magento_Catalog, Acme_Hello. Модуль можно включить и отключить командой.

Тема

Тема отвечает за внешний вид: шаблоны, стили, картинки. В поставке есть две темы витрины — Magento/blank и Magento/luma. Свою тему наследуют от одной из них и меняют только нужные файлы.

Режимы работы

РежимДля чего
defaultВключён после установки; подходит только для первого запуска
developerРазработка: ошибки на экране, файлы собираются на лету
productionРабочий сервер: всё собрано заранее, ошибки только в журнале

Текущий режим показывает команда:

bin/magento deploy:mode:show

Она печатает строку вида Current application mode: default.

Частая ошибка

Слова «магазин» и «витрина» легко перепутать: в коде store обычно означает именно витрину (store view), а не группу. Например, код витрины default и константа ScopeInterface::SCOPE_STORE относятся к уровню витрины. Когда в документации написано «store ID», почти всегда имеется в виду номер витрины.

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

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