जैसा कि मैंने आपके प्रश्न से समझा है कि जब आप किसी चेकआउट पृष्ठ पर आते हैं तो आप हमेशा एक शिपिंग विधि का चयन करना चाहते हैं।
इसे प्राप्त करने के लिए, हमें Magento_Checkout मॉड्यूल से एक जावास्क्रिप्ट ओवरराइड करने की आवश्यकता है।
पहली चीजें पहले, हमें एक मॉड्यूल बनाने की आवश्यकता है:
नाम स्थान / मॉड्यूल / registration.php
<?php
\Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::MODULE,
'Namespace_Module',
__DIR__
);
नाम स्थान / मॉड्यूल / etc / module.xml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
<module name="Namespace_Module" setup_version="1.0.0">
<sequence>
<module name="Magento_Checkout"/>
</sequence>
</module>
</config>
इसके बाद, हमें उस js को ओवरराइड करने के लिए आवश्यकताएं बनाने की आवश्यकता है।
नाम स्थान / मॉड्यूल / देखें / दृश्यपटल / requirejs-config.js
var config = {
map: {
'*': {
'Magento_Checkout/js/model/checkout-data-resolver': 'Namespace_Module/js/model/checkout-data-resolver'
}
}
};
अब हमें अपने मॉड्यूल से उसी पथ checkout-data-resolver.js
से कॉपी Magento_Checkout/view/frontend/web/js/model
करना होगाNamespace_Module/view/frontend/web/js/model
उसके बाद, हमें फ़ंक्शन के अंदर एक स्थिति बदलने की आवश्यकता है resolveShippingRates: function (ratesData)
से:
...
if (ratesData.length == 1) {
//set shipping rate if we have only one available shipping rate
selectShippingMethodAction(ratesData[0]);
return;
}
...
सेवा:
...
if (ratesData.length >= 1) {
//set shipping rate if we have only one available shipping rate
selectShippingMethodAction(ratesData[0]);
return;
}
...
और यह है, अब आपको बस इतना करना है:
- मॉड्यूल सक्रिय करें: php bin / magento मॉड्यूल: Namespace_Module सक्षम करें
- सेटअप अपग्रेड रन करें: php bin / magento सेटअप: अपग्रेड करें
- एक स्थिर तैनाती करें: php bin / magento सेटअप: स्थिर-सामग्री: परिनियोजित