Si j'ai bien compris votre question, vous voulez toujours avoir une méthode d'expédition sélectionnée lorsque quelqu'un vient sur la page de paiement.
Pour ce faire, nous devons remplacer un javascript du module Magento_Checkout.
Tout d'abord, nous devons créer un module:
Espace de noms / Module / registration.php
<?php
\Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::MODULE,
'Namespace_Module',
__DIR__
);
Espace de noms / Module / 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>
Après cela, nous devons créer les requirejs pour remplacer ce js.
Espace de noms / Module / view / frontend / requirejs-config.js
var config = {
map: {
'*': {
'Magento_Checkout/js/model/checkout-data-resolver': 'Namespace_Module/js/model/checkout-data-resolver'
}
}
};
Maintenant , nous devons copier checkout-data-resolver.js
de Magento_Checkout/view/frontend/web/js/model
notre module avec le même cheminNamespace_Module/view/frontend/web/js/model
Après cela, nous devons changer une condition à l'intérieur de la fonction resolveShippingRates: function (ratesData)
De:
...
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;
}
...
Et c'est tout, il ne vous reste plus qu'à:
- Activer le module: module php bin / magento: activer Namespace_Module
- Exécutez une mise à niveau de configuration: configuration de php bin / magento: mise à niveau
- Faites un déploiement statique: configuration de php bin / magento: contenu statique: déploiement