Magento 2 - Comment remplacer le fichier javascript du frontend
J'ai besoin d'écraser un fichier javascript à partir d'un module personnalisé à:
fournisseur \ amasty \ module-single-step-checkout \ view \ frontend \ web \ js \ model \ one-step-layout.js
car je dois remplacer une ligne de code pour remplacer un modèle par mon propre module:
// 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;
},
...
Comment puis-je remplacer cette ligne de mon propre modèle?
J'ai créé ce fichier app / code / Company / Shipping / view / frontend / requirejs-config.js file:
var config = {
config: {
mixins: {
'Amasty_Checkout/js/model/one-step-layout': {
'Company_Shipping/js/model/one-step-layout': true
}
}
}
};
Ensuite, j'ai copié le fichier one-step-layout.js dans app \ code \ Company \ Shipping \ view \ frontend \ web \ js \ model \ one-step-layout.js .
Cela devrait mélanger mon script au script d'origine.
Quel code est requis dans mon fichier one-step-layout.js pour remplacer le modèle et charger mon propre modèle?
Réponses
Magento fournit 2 moyens de remplacer le fichier js.
- carte
- mixin
Mixin est assez compliqué et la carte est vraiment facile à comprendre.
Pour remplacer le fichier js, vous devez d'abord créer un module. Pour créer un module personnalisé, vous avez besoin des fichiers suivants dans app / code / Company / Shipping /. J'espère que vous avez créé cela.
- registration.php
- etc / module.xml
alors vous devez créer le fichier requirejs-config.js ici app / code / Company / Shipping / view / frontend / requirejs-config.js comme vous l'avez créé mais le contenu changera ici.
Le contenu de ce fichier doit être le même que ci-dessous.
var config = {
map: {
'*': {
'Amasty_Checkout/js/model/one-step-layout':'Company_Shipping/js/model/one-step-layout'
}
}
};
puis copiez le code du fichier js original dans app / code / Company / Shipping / view / frontend / web / js / model / one-step-layout.js
et apportez vos modifications ici.
alors vous devez exécuter la commande de magento.
configuration de php bin / magento: mise à niveau de la configuration de
php bin / magento: static-content: deploy
Si cela vous aide, cliquez sur J'aime et acceptez comme réponse.
Merci
Hiren Patel