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>

 

 

 

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

 

Tags: Magento2

Recent Posts

Али Апшерони

Умный не говорит и половины из того, что знает, глупый не ведает и половины из… Read More

01/08/2021

Какие бесплатные конструкторы сайтов будут лучшими для разработки сайта

Начинающим веб-мастерам бывает сложно выбрать конструктор сайтов, который бы полностью устроил их по соотношению удобства… Read More

28/07/2021

Владимир Высоцкий

Я понимаю, как смешно Искать в глазах ответ, В глазах, которым все равно, Я рядом… Read More

25/07/2021

Брюс Ли

Нет такой фразы "Я не могу!" Сумел один, смогут и другие. Не смог никто -… Read More

21/07/2021

Иоганн Вольфганг фон Гете

К чему душе беззлобье, широта уму, Руке готовность действовать и воля, Когда в горячке зла… Read More

12/07/2021

Какой бойлер использовать для кухни

Незаменимым устройством при отключении горячей воды является бойлер для кухни, позволяющий с комфортом мыть посуду… Read More

08/07/2021