Theo tôi hiểu từ câu hỏi của bạn là bạn muốn luôn có một phương thức giao hàng được chọn khi có ai đó đến trang thanh toán.
Để đạt được điều này, chúng ta cần ghi đè một javascript từ mô-đun Magento_Checkout.
Trước tiên, chúng ta cần tạo một mô-đun:
Không gian tên / Mô-đun / đăng ký.php
<?php
\Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::MODULE,
'Namespace_Module',
__DIR__
);
Không gian tên / Mô-đun / 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>
Sau này, chúng ta cần tạo các requestjs để ghi đè js đó.
Không gian tên / Mô-đun / chế độ xem / frontend / allowjs-config.js
var config = {
map: {
'*': {
'Magento_Checkout/js/model/checkout-data-resolver': 'Namespace_Module/js/model/checkout-data-resolver'
}
}
};
Bây giờ chúng ta phải sao chép checkout-data-resolver.js
từ Magento_Checkout/view/frontend/web/js/model
trong mô-đun của mình với cùng một đường dẫnNamespace_Module/view/frontend/web/js/model
Sau đó, chúng ta cần thay đổi một điều kiện bên trong hàm resolveShippingRates: function (ratesData)
Từ:
...
if (ratesData.length == 1) {
//set shipping rate if we have only one available shipping rate
selectShippingMethodAction(ratesData[0]);
return;
}
...
Đến:
...
if (ratesData.length >= 1) {
//set shipping rate if we have only one available shipping rate
selectShippingMethodAction(ratesData[0]);
return;
}
...
Và đó là tất cả, tất cả những gì bạn phải làm bây giờ là:
- Kích hoạt mô-đun: mô-đun php bin / magento: bật Namespace_Module
- Chạy nâng cấp thiết lập: php bin / magento setup: nâng cấp
- Thực hiện triển khai tĩnh: php bin / magento setup: static-content: triển khai