Часто потрібно змінювати логіку коду JavaScript, розташовану у файлі .js. Найпростіший спосіб – перезаписати js-файл за допомогою теми. Ви можете дізнатися, як перезаписати файли перегляду, у статті про Перевизначення файлів Storeftont у Magento 2 . Це швидкий, але не елегантний спосіб.
Щоб змінити один або кілька методів js-файлу, використовуйте міксини, доступні в RequireJS.
Щоб розширити цей файл:
app/code/VendorName/ModuleName/view/%area%/web/js/folder1/folder2/somefile.js
за допомогою наступного коду:
define(
[
'jquery',
'underscore',
'ko',
'uiComponent',
'uiRegistry',
],
function (
$,
_,
ko,
Component,
registry,
) {
'use strict';
return Component.extend({
// ...
method1: function() { /* some code */ },
method2: function() { /* some code */ }
// ...
}); }
);
%area% – область, де розширюється файл, наприклад: frontend, adminhtml, base.
Щоб перезаписати метод 1, вам потрібно створити Basic модуль у Magento та додайте до нього такі 2 файли:
1. requirejs-config.js
Це файл конфігурації RequireJS, куди додано міксер. Створіть його в папці модуля за таким шляхом:
view/%area%/requirejs-config.js
та додайте цей код:
var config = {
config: {
mixins: {
'VendorName_ModuleName/js/folder1/folder2/somefile' : {
'My_Module/js/folder1/folder2/somefile-mixin':true
}
}
},
}
2. Сам міксер somefile-mixin.js.
Збережіть його в папці модуля за таким шляхом:
view/%area%/web/js/folder1/folder2/somefile-mixin.js
та додайте наступний код:
define(
[
'jquery',
'underscore',
'ko',
'uiComponent',
'uiRegistry',
],
function (
$,
_,
ko,
Component,
registry,
) {
'use strict';
var mixin = {
method1: function() { /* my code */ },
};
return function (target) {
return target.extend(mixin);
};
}
);
Після збереження змін не забудьте розгортання статичного контенту , виконавши цю команду:
php bin/magento setup:static-content:deploy
