Как я понял из вашего вопроса, вы хотите всегда выбирать способ доставки, когда кто-то заходит на страницу оформления заказа.
Чтобы добиться этого, нам нужно переопределить 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>
После этого нам нужно создать requirejs для переопределения этого 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 module: включите Namespace_Module
- Запустите обновление установки: php bin / magento setup: обновление
- Выполните статическое развертывание: php bin / magento setup: static-content: deploy