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>

 

 

 

Сподіваємося, що інформація з даного уроку була для вас корисною!

 

Recent Posts

SIP-транки — що це таке і як вони працюють у IP-телефонії

У сучасній IP-телефонії важливу роль відіграє технологія, яка забезпечує передачу голосу через інтернет між бізнесом…

4 дні ago

Чому варто обрати ноутбук Apple MacBook Pro 14 для сучасних ІТ-завдань

Вибір робочої машини для веб-розробника або адміністратора серверів є завжди компромісом між портативністю, автономністю і…

1 тиждень ago

Практичний гайд: як підібрати надійний безперебійник для домашнього роутера

Зникло світло і разом з ним миттєво зник зв'язок з навколишнім світом? Це знайома та…

1 тиждень ago

Google втрачає монополію: Як підготувати IT-сайт до AI-пошуку (GEO)

Що взагалі сталося з пошуком в інтернеті? Я не побоюся сказати це вголос: сталася справжня…

3 тижні ago

Проксі для соцмереж та Facebook – Як уникнути бана облікових записів

Уявіть, що вас внесли до чорного списку елітного клубу. Якщо ви підійдете до фейс-контролю особисто…

3 тижні ago

Антидетект-браузери для початківців: що це таке (на прикладі Dolphin чи AdsPower) і як їх правильно поєднати з мобільними проксі

Анонімність та розділення акаунтів є базовою потребою для співробітників, що займаються арбітражем трафіку, SMM чи…

1 місяць ago