Categories: Мадженто 2

Основная информация о новой структуре в 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>

 

 

 

Надеемся, что информация из данного урока была для вас полезной!

 

Recent Posts

Как ухаживать за кожей малыша летом и зимой

Кожа младенца – тонкая и нежная. Еще не справляется с защитой организма от внешних факторов.…

19 часов ago

Что такое Сокеты (WebSocket) 🔌 | подробно для начинающих

Представьте себе телефонный разговор. Вы звоните другу, он поднимает трубку, и вы можете говорить одновременно,…

2 дня ago

Мобильный воркстейшн: может ли планшет 📱 заменить ноутбук веб-разработчику?

Долгое время планшеты воспринимались исключительно как устройства для потребления контента: посмотреть YouTube, полистать ленту новостей…

3 дня ago

Как принудительно обновить кэш у пользователей 🧹 | Практические методы

Вы внесли правки в CSS, исправили критический баг в JavaScript, загрузили файлы на сервер и…

5 дней ago

HTTP-заголовки кэширования (Cache-Control) 🚀 — подробный обзор

Представьте, что вы каждое утро приходите в одно и то же кафе и спрашиваете бариста:…

6 дней ago

Наоми Кэмпбелл

Очень многие недооценивают то, что у них есть, и переоценивают то, чего у них нет…

2 недели ago