Під час розробки інтернет-магазину на базі Magento 2, виникає  задача розширення стандартного функціоналу Magento 2 або встановлених на неї модулів. Редагувати файли ядра Magento чи модулів недопустимо, тому що під час оновлення ці зміни будуть перезаписані. Отож, як внести зміни у storefront (frontend) файл темплейту, css, js?

 

УВАГА! Подані нижче інструкції не можна застовувати для переписування layout-файлів.

 

Переписування view-файлів модуля, що знаходиться у папці app/code.

Нехай потрібно змінити файл:

app/code/Magefan/Blog/view/frontend/templates/post/view.phtml

Створіть його копію у папці теми зі шляхом:

app/design/frontend/ThemeVendor/themename/Magefan_Blog/templates/post/view.phtml

Внесіть необхідні зміни у щойно створений файл теми.

Якщо власна тема відсутня на вашій Magneto інсталяції, створіть її.

 

Переписування view-файлів модуля, що знаходиться у папці vendor.

Нехай потрібно змінити файл:

vendor/magefan/module-blog/view/frontend/web/css/blog-custom.css

Створіть його копію у папці теми зі шляхом:

app/design/frontend/ThemeVendor/themename/Magefan_Blog/web/css/blog-custom.css

Звергіть увагу, що назву папки модуля у темі (наприклад Magefan_Blog) не завжди можна сформувати із назви папки модуля у vendor (наприклад magefan/module-blog). Краще візьміть це значення із файлу модуля registration.php.

<?php
/* код файлу registration.php модуля блогу від Magefan для Magento 2 */
\Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::MODULE,
'Magefan_Blog',
__DIR__
);

 

Переписування файлів батьківської теми.

Нехай потрібно змінити файл:

app/design/frontend/Smartwave/porto/Magento_Catalog/templates/product/list.phtml

Створіть його копію у папці теми зі шляхом:

app/design/frontend/ThemeVendor/themename/Magento_Catalog/templates/product/list.phtml

Зверніть увагу, що у цьому випадку змінюється лише шлях до теми.

 

Важиливо: якщо магазин знаходиться у production режимі (чого неповинно бути під час розробки), то після будь-яких змін у view-файлах необхідно виконати розгортання (deploy) статичного контенту.