Основная информация о новой структуре в Magento 2
В сегодняшней статье мы посмотрим на изменения системы шаблонов в Мадженто 2. Данные изменения не слишком радикальны, по сравнению с Magento 1.x версиями, но могут дезориентировать новичков.
Одним из самых больших различий между старыми и новыми версиями Magento является способ структурирования всего проекта. В Magento 1.x шаблоны были определены в app/design/frontend/<ПАКЕТ>/<ТЕМА>
, а все ресурсы темы были определены в skin/frontend/<ПАКЕТ>/<ТЕМА>
, в Magento 2 все это объединено в одной базой папке. Теперь все шаблоны и ресурсы хранятся в: app/design/frontend/<ПАКЕТ>/<ТЕМА>
.
Для примера вы можете открыть «чистую» тему в Мадженто 2 (blank). Она расположена в app/design/frontend/Magento/blank/
(или в app/vendor/magento/theme-frontend-blank/
, если вы устанавливали движок через Composer). Вы увидите большое количество папок, каждая из которых представляет собой модуль в Magento 2, шаблоны или ресурсы которых переопределяются в этой теме.
Если вы хотите переопределить/изменить шаблоны основных модулей или их ресурсы, вам нужно будет создать эквивалентную папку модуля в своей теме, которая соответствует пути файла, который вы хотите переопределить/расширить.
Например, если вы хотите переопределить что-то в модуле Catalog, вам необходимо создать папку в своей теме Magento_Catalog
. Данное имя ссылается на <пакет_модуль>
, в данном случае первая часть названия – Magento
– ссылается на app/code/Magento
, а вторая часть после подчеркивания ссылается на название модуля. В нашем случае это Catalog
.
Т.е, чтобы переопределить содержимое модуля в app/code/<ПАКЕТ>/<МОДУЛЬ>
вам нужно будет создать папку с названием <ПАКЕТ>_<МОДУЛЬ>
в своей теме, например, app/design/frontend/<ПАКЕТ>/<ТЕМА>/Magento_Catalog
.
Также обратите внимание, что вы можете только переопределять содержимое части view/frontend
модуля в своей теме. Если вам нужно переопределить Контроллеры и Блоки, это делается в другом месте (это мы рассмотрим в отдельном уроке).
Определение собственных шаблонов в теме
Создание блоков и шаблонов немного похоже на то, как это делалось в Magento 1.x. В Magento 2 для создания нового шаблона, также нужно определять Блок, например:
<block class="Magento\Framework\View\Element\Template" name="custom.block.name" template="Magento_Theme::vash-shablon.phtml" before="-" />
Обратите внимание на тег class
, который связан с определением Блока. В данном примере используется тот тип класса, который нужен при создании стандартного Блока, который не требует дополнительной функциональности и предназначен только для контента с грубо прописанным кодом. Если вам нужно связать Блок с другим классом, вы указываете его в этом теге.
Обратите внимание на новый синтаксис атрибута template
:
Magento_Theme::vash-shablon.phtml
Это сокращенный синтаксис для ссылки на папку шаблонов в определенном модуле (в данном случае Magento_Theme
). Другими словами, эта ссылка ведет на файл vash-shablon.phtml
в следующем месте: app/design/frontend/ПАКЕТ/ТЕМА/Magento_Theme/templates/
.
Если редактируемый XML-файл макета уже находится в том же модуле, что и шаблон, который вы вызываете, вы можете пропустить определение модуля и просто вызвать шаблон следующим образом:
template="vash-shablon.phtml"
Это будет ссылка на папку templates
в модуле, где расположен файл макета XML. Если вы хотите разместить Блок в другом Блоке или Контейнере, вы можете указать это в определении родительского Блока или Контейнера, или же вы можете использовать методы referenceBlock
или referenceContainer
.
<referenceContainer name="main.content"> <block class="Magento\Framework\View\Element\Template" name="custom.block.name" template="Magento_Theme::vash-shablon.phtml" before="-" /> </referenceContainer>
Надеемся, что информация из данного урока была для вас полезной!
Последние посты
Как выбрать идеальный ноутбук: Полный гайд
Выбор ноутбука может быть сложной задачей в мире, где рынок переполнен вариантами на любой вкус… Читать далее
Томас Эдисон
Наша самая большая слабость заключается в том, что мы быстро сдаемся. Самый верный способ добиться… Читать далее
Самые красивые и впечатляющие мосты со всего мира (ТОП-10)
Мост — это нечто большее, чем просто сооружение, соединяющее два берега. Для того, чтобы появился… Читать далее
Соломон
Жизнь нас учит, что свою пару мы познаем, когда разводимся, своих братьев мы познаем, когда… Читать далее
Чак Паланик
Кто может — тот делает. Кто не может — тот критикует Чак Паланик Читать далее
Ричард Бах
Ни одно желание не дается тебе отдельно от силы, позволяющей его осуществить. Хотя, возможно, для… Читать далее