Як я зрозумів із вашого запитання, ви хочете, щоб у вас завжди був обраний спосіб доставки, коли хтось заходить на сторінку оформлення замовлення.
Для цього нам потрібно перекрити javascript від модуля Magento_Checkout.
Спочатку спочатку нам потрібно створити модуль:
Простір імен / Модуль / registration.php
<?php
\Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::MODULE,
'Namespace_Module',
__DIR__
);
Простір імен / Модуль / тощо / 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>
Після цього нам потрібно створити Requjs для переосмислення цього js.
Простір імен / Модуль / view / frontend / Requjs-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 module: увімкніть Namespace_Module
- Запустіть оновлення установки: php bin / magento setup: оновлення
- Зробіть статичне розгортання: налаштування php bin / magento: статичний контент: розгортання