Основна інформація про нову структуру в 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>
Сподіваємося, що інформація з даного уроку була для вас корисною!
This post was last modified on 26/08/2018 21:22
Останні пости
Генрі Форд
Людина має два мотиви поведінки — один справжній та інший, що гарно звучить Генрі Форд…
Фрідріх Ніцше
Не треба додумувати надто багато. Так ви створюєте проблеми, яких не існувало Фрідріх Ніцше
Такий різний інвертор! Вибираємо між кондиціонерами Inverter, Inverter DC та Full DC
Літо в розпалі, а значить якраз час задуматися про покупку кондиціонера. Але як не загубитися…
Корисні поради щодо вибору розсувних дверей
Варто знати, що функціональність і дизайн працюють рука об руку, коли ви використовуєте розсувні двері.…