Основна інформація про нову структуру в 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)
Міст — це щось більше, ніж просто споруда, яка поєднує два береги. Для того, щоб… Читати далі
Соломон
Життя нас вчить, що свою пару ми пізнаємо, коли розлучаємося, своїх братів ми пізнаємо, коли… Читати далі
Річард Бах
Жодне бажання не дається тобі окремо від сили, що дозволяє його здійснити. Хоча, можливо, для… Читати далі
Стівен Кінг
Життя — це безперервний досвід, і навіть найгірші моменти займають своє місце у пазлі нашого… Читати далі
невідомий автор
Люди, які люблять самотність, дорого заплатили за дружбу з кимось... (невідомий автор) Читати далі