Seperti yang saya mengerti dari pertanyaan Anda adalah bahwa Anda ingin selalu memiliki metode pengiriman yang dipilih ketika seseorang datang pada halaman checkout.
Untuk mencapai ini, kita perlu mengganti javascript dari modul Magento_Checkout.
Hal pertama yang pertama, kita perlu membuat modul:
Namespace / Module / registration.php
<?php
\Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::MODULE,
'Namespace_Module',
__DIR__
);
Namespace / Module / 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>
Setelah ini, kita perlu membuat requirejs untuk menimpa js itu.
Namespace / Module / view / frontend / requireejs-config.js
var config = {
map: {
'*': {
'Magento_Checkout/js/model/checkout-data-resolver': 'Namespace_Module/js/model/checkout-data-resolver'
}
}
};
Sekarang kita harus menyalin checkout-data-resolver.js
dari Magento_Checkout/view/frontend/web/js/model
dalam modul kita dengan jalur yang samaNamespace_Module/view/frontend/web/js/model
Setelah itu, kita perlu mengubah kondisi di dalam fungsi resolveShippingRates: function (ratesData)
Dari:
...
if (ratesData.length == 1) {
//set shipping rate if we have only one available shipping rate
selectShippingMethodAction(ratesData[0]);
return;
}
...
Untuk:
...
if (ratesData.length >= 1) {
//set shipping rate if we have only one available shipping rate
selectShippingMethodAction(ratesData[0]);
return;
}
...
Dan hanya itu, yang harus Anda lakukan sekarang adalah:
- Aktifkan modul: modul php bin / magento: aktifkan Namespace_Module
- Jalankan upgrade pengaturan: php bin / magento setup: upgrade
- Lakukan penyebaran statis: setup bin bin / magento: static-content: deploy