Коварная война россии против Украины. Ориентировочные потери врага
(по состоянию на 24.05.2022)
29350
солдат
205
самолетов
170
вертолетов
1302
танков
3194
ББМ
606
артиллерия
93
ПВО
201
РСЗО
2213
машин
13
корабли и катера
Основная информация о новой структуре в Magento 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>

 

 

 

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

 

 

Добавить комментарий

Ваш адрес email не будет опубликован.