Magento 2 - Como substituir arquivo javascript de frontend
Preciso substituir um arquivo javascript de um módulo personalizado em:
vendor \ amasty \ module-single-step-checkout \ view \ frontend \ web \ js \ model \ one-step-layout.js
porque preciso substituir uma linha de código nele para substituir um modelo por meu próprio módulo:
// Checkout layout options model
define([
'ko',
'uiRegistry',
'Amasty_Checkout/js/view/utils'
], function (ko, registry, viewUtils) {
'use strict';
const MAPPING_BLOCK_NAME = {
...
},
CLASS_NAMES = {
classic: {
...
},
modern: {
...
}
},
BLOCK_ATTRS = {
...
};
return {
containerClassNames: ko.observable(''),
selectedLayout: [],
checkoutDesign: '',
checkoutLayout: '',
checkoutBlocks: {},
mainAdditionalClasses: '',
/**
* Getting checkout block by name
* @param {String} blockName
* @returns {observable}
*/
getCheckoutBlock: function (blockName) {
var requestComponent = this.checkoutBlocks[blockName]
|| this.requestComponent(MAPPING_BLOCK_NAME[blockName]);
switch (blockName) {
case 'shipping_address':
if (requestComponent()) {
requestComponent().template = 'Amasty_Checkout/onepage/shipping/address';
}
break;
case 'shipping_method':
if (requestComponent()) {
// ▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼
// I need to replace this line with `Company_Shipping/onepage/shipping/methods`
requestComponent().template = 'Amasty_Checkout/onepage/shipping/methods';
}
break;
default: break;
}
return requestComponent;
},
...
Como posso substituir essa linha de meu próprio modelo?
Eu criei este arquivo app / code / Company / Shipping / view / frontend / requirejs-config.js :
var config = {
config: {
mixins: {
'Amasty_Checkout/js/model/one-step-layout': {
'Company_Shipping/js/model/one-step-layout': true
}
}
}
};
Em seguida, copiei o arquivo one-step-layout.js para app \ code \ Company \ Shipping \ view \ frontend \ web \ js \ model \ one-step-layout.js .
Isso deve misturar meu script ao script original.
Qual código é necessário em meu arquivo layout.js de uma etapa para substituir o modelo e carregar meu próprio modelo?
Respostas
Magento fornece 2 maneiras de substituir o arquivo js.
- mapa
- mixin
O Mixin é bastante complicado e o mapa é realmente fácil de entender.
Para substituir o arquivo js, primeiro você deve criar o módulo. Para criar um módulo personalizado, você precisa dos seguintes arquivos em app / code / Company / Shipping /. Espero que você tenha criado isso.
- registration.php
- etc / module.xml
então, você deve criar o arquivo requirejs-config.js aqui app / code / Company / Shipping / view / frontend / requirejs-config.js conforme você criou, mas o conteúdo será alterado aqui.
O conteúdo desse arquivo deve ser o mesmo que abaixo.
var config = {
map: {
'*': {
'Amasty_Checkout/js/model/one-step-layout':'Company_Shipping/js/model/one-step-layout'
}
}
};
e copie o código do arquivo js original para app / code / Company / Shipping / view / frontend / web / js / model / one-step-layout.js
e faça as alterações aqui.
então você tem que executar o comando do magento.
php bin / magento setup: atualizar
php bin / magento setup: static-content: deploy
Se isso te ajudar então clique em curtir e aceitar como resposta
Obrigado
Hiren Patel