Wie ich aus Ihrer Frage verstanden habe, möchten Sie immer eine Versandart auswählen, wenn jemand auf die Checkout-Seite kommt.
Um dies zu erreichen, müssen wir ein Javascript aus dem Magento_Checkout-Modul überschreiben.
Zuerst müssen wir ein Modul erstellen:
Namespace / Module / register.php
<?php
\Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::MODULE,
'Namespace_Module',
__DIR__
);
Namespace / 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>
Danach müssen wir die requirejs erstellen, um diese js zu überschreiben.
Namespace / Module / view / frontend / requirejs-config.js
var config = {
map: {
'*': {
'Magento_Checkout/js/model/checkout-data-resolver': 'Namespace_Module/js/model/checkout-data-resolver'
}
}
};
Jetzt müssen wir kopieren checkout-data-resolver.js
von Magento_Checkout/view/frontend/web/js/model
in unserem Modul mit dem gleichen PfadNamespace_Module/view/frontend/web/js/model
Danach müssen wir eine Bedingung innerhalb der Funktion ändern resolveShippingRates: function (ratesData)
Von:
...
if (ratesData.length == 1) {
//set shipping rate if we have only one available shipping rate
selectShippingMethodAction(ratesData[0]);
return;
}
...
Zu:
...
if (ratesData.length >= 1) {
//set shipping rate if we have only one available shipping rate
selectShippingMethodAction(ratesData[0]);
return;
}
...
Und das ist alles, was Sie jetzt tun müssen, ist:
- Aktivieren Sie das Modul: php bin / magento module: enable Namespace_Module
- Führen Sie ein Setup-Upgrade durch: PHP Bin / Magento Setup: Upgrade
- Führen Sie eine statische Bereitstellung durch: php bin / magento setup: static-content: deploy