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>

 

 

 

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

 

Share
Published by
SebWeo
Tags: Magento2

Recent Posts

Локальная поисковая оптимизация (local SEO) в теоретических деталях

Ваша стратегия SEO продвижения должна быть сильной и охватывать практически все грани этой комплексной работы,…

2 дня ago

Омар Хайям

Я знаю мир: В нем вор сидит на воре, Глупец у мудреца всегда выигрывает в…

5 дней ago

Уроки JavaScript — Массивы: основы использования и основные функции

Массивы не только в JavaScript являются фундаментальной структурой данных, но и практически во всех языках…

1 неделя ago

Выбираем системный блок: полезные рекомендации

Системный блок — это центральная часть персонального компьютера, которая включает основные аппаратные компоненты: процессор, видеокарту,…

1 неделя ago

Как стать профессиональным веб-разработчиком

Думали ли вы когда-нибудь о карьере веб-разработчика/программиста? Чтобы самостоятельно создавать свои веб-сайты, приложения, программы? Если…

2 недели ago

Как программисту научиться правильному обучению в современном мире

Ничто в современном мире не остается долго неизменным. Применимо к ремеслу, это утверждение означает, что…

2 недели ago