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

Френк МакКінні Кін Хаббард

Є два способи командувати жінкою, але ніхто їх не знає Френк МакКінні Кін Хаббард  

2 дні ago

Роберт Шеклі

Найгірше, що в інформаційній війні завжди програє той, хто говорить правду, адже він обмежений правдою,…

3 дні ago

Річард Бах

Якщо тобі колись захочеться знайти таку людину, яка зможе здолати будь-яку, навіть найважчу біду і…

4 дні ago

Що таке CDN і чому він потрібен вашому сайту | огляд в 2025

Уявіть, що ви відкрили піцерію у Києві. Ваша піца настільки смачна, що її хочуть замовити…

1 тиждень ago

Що таке Varnish Cache і як він прискорить ваш сайт (початківцям)

Уявіть, що ваш веб-сайт — це велика бібліотека, а ваш сервер — це головний бібліотекар.…

1 тиждень ago

Що таке WAF (Web Application Firewall) і чому без нього сайт у небезпеці

Уявіть, що ваш офіс захищений надійною охоронною системою: у вас є міцні двері, сигналізація та…

1 тиждень ago