Z twojego pytania wynika, że chcesz zawsze mieć wybraną metodę wysyłki, gdy ktoś wejdzie na stronę kasy.
Aby to osiągnąć, musimy przesłonić javascript z modułu Magento_Checkout.
Po pierwsze, musimy stworzyć moduł:
Przestrzeń nazw / moduł / rejestracja.php
<?php
\Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::MODULE,
'Namespace_Module',
__DIR__
);
Przestrzeń nazw / moduł / 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>
Następnie musimy utworzyć wymagane pliki do zastąpienia tego pliku.
Przestrzeń nazw / moduł / widok / frontend / Requjs-config.js
var config = {
map: {
'*': {
'Magento_Checkout/js/model/checkout-data-resolver': 'Namespace_Module/js/model/checkout-data-resolver'
}
}
};
Teraz musimy skopiować checkout-data-resolver.js
z Magento_Checkout/view/frontend/web/js/model
naszego modułu tą samą ścieżkąNamespace_Module/view/frontend/web/js/model
Następnie musimy zmienić warunek wewnątrz funkcji resolveShippingRates: function (ratesData)
Od:
...
if (ratesData.length == 1) {
//set shipping rate if we have only one available shipping rate
selectShippingMethodAction(ratesData[0]);
return;
}
...
Do:
...
if (ratesData.length >= 1) {
//set shipping rate if we have only one available shipping rate
selectShippingMethodAction(ratesData[0]);
return;
}
...
I to wszystko, wszystko, co musisz teraz zrobić, to:
- Aktywuj moduł: moduł bin / magento: włącz moduł przestrzeni nazw
- Uruchom aktualizację instalacji: php bin / magento setup: aktualizacja
- Wykonaj wdrożenie statyczne: konfiguracja php bin / magento: zawartość statyczna: wdrożenie