Come ho capito dalla tua domanda è che vuoi sempre avere un metodo di spedizione selezionato quando qualcuno entra nella pagina di checkout.
Per raggiungere questo obiettivo, dobbiamo sovrascrivere un javascript dal modulo Magento_Checkout.
Per prima cosa, dobbiamo creare un modulo:
Namespace / modulo / registration.php
<?php
\Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::MODULE,
'Namespace_Module',
__DIR__
);
Spazio dei nomi / modulo / 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>
Dopodiché, dobbiamo creare i requestjs per sovrascrivere quel js.
Namespace / modulo / immagine / frontend / requirejs-config.js
var config = {
map: {
'*': {
'Magento_Checkout/js/model/checkout-data-resolver': 'Namespace_Module/js/model/checkout-data-resolver'
}
}
};
Ora dobbiamo copiare checkout-data-resolver.js
dal Magento_Checkout/view/frontend/web/js/model
nostro modulo con lo stesso percorsoNamespace_Module/view/frontend/web/js/model
Successivamente, è necessario modificare una condizione all'interno della funzione resolveShippingRates: function (ratesData)
A partire dal:
...
if (ratesData.length == 1) {
//set shipping rate if we have only one available shipping rate
selectShippingMethodAction(ratesData[0]);
return;
}
...
Per:
...
if (ratesData.length >= 1) {
//set shipping rate if we have only one available shipping rate
selectShippingMethodAction(ratesData[0]);
return;
}
...
E questo è tutto, tutto ciò che devi fare ora è:
- Attiva il modulo: php bin / magento module: abilita Namespace_Module
- Esegui un aggiornamento dell'installazione: php bin / magento setup: upgrade
- Esegui una distribuzione statica: php bin / magento setup: static-content: deploy