Qui dit site e-commerce, dit livraison : ce dernier jalon de votre tunnel de vente n'est pas à laisser de côté ! Assurez-vous de proposer des méthodes de livraison qui conviennent à vos utilisateurs, puis découvrez tous nos tutoriels.
A l’aide du tutoriel “Créer un module Magento 2”, créez votre module Gone/ShippingMethod dans le répertoire app/code.
Dans votre module, créez un sous-dossier Model et Carrier et ajoutez un fichier GoneShippingMethod.php. Ce fichier contiendra la logique de votre méthode de livraison.
<?php/*** Copyright © All rights reserved.* See COPYING.txt for license details.*/declare(strict_types=1);namespace Gone\MyModule\Model\Carrier;use Magento\Quote\Model\Quote\Address\RateRequest;use Magento\Shipping\Model\Rate\Result;class GoneShippingMethod extends \Magento\Shipping\Model\Carrier\AbstractCarrier implements\Magento\Shipping\Model\Carrier\CarrierInterface{protected $_code = 'goneshippingmethod';protected $_isFixed = true;protected $_rateResultFactory;protected $_rateMethodFactory;/*** Constructor** @param \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig* @param \Magento\Quote\Model\Quote\Address\RateResult\ErrorFactory $rateErrorFactory* @param \Psr\Log\LoggerInterface $logger* @param \Magento\Shipping\Model\Rate\ResultFactory $rateResultFactory* @param \Magento\Quote\Model\Quote\Address\RateResult\MethodFactory $rateMethodFactory* @param array $data*/public function __construct(\Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,\Magento\Quote\Model\Quote\Address\RateResult\ErrorFactory $rateErrorFactory,\Psr\Log\LoggerInterface $logger,\Magento\Shipping\Model\Rate\ResultFactory $rateResultFactory,\Magento\Quote\Model\Quote\Address\RateResult\MethodFactory $rateMethodFactory,array $data = []) {$this->_rateResultFactory = $rateResultFactory;$this->_rateMethodFactory = $rateMethodFactory;parent::__construct($scopeConfig, $rateErrorFactory, $logger, $data);}/*** {@inheritdoc}*/public function collectRates(RateRequest $request){if (!$this->getConfigFlag('active')) {return false;}$shippingPrice = $this->getConfigData('price');$result = $this->_rateResultFactory->create();if ($shippingPrice !== false) {$method = $this->_rateMethodFactory->create();$method->setCarrier($this->_code);$method->setCarrierTitle($this->getConfigData('title'));$method->setMethod($this->_code);$method->setMethodTitle($this->getConfigData('name'));if ($request->getFreeShipping() === true) {$shippingPrice = '0.00';}$method->setPrice($shippingPrice);$method->setCost($shippingPrice);$result->append($method);}return $result;}/*** getAllowedMethods** @return array*/public function getAllowedMethods(){return [$this->_code => $this->getConfigData('name')];}}
Dans le dossier etc, créer un répertoire adminhtml avec un fichier system.xml. Celui ci permettra d’afficher la configuration dans le back office Magento.
<?xml version="1.0" ?><config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Config:etc/system_file.xsd"><system><section id="carriers" sortOrder="1000" showInWebsite="1" showInStore="1" showInDefault="1" translate="label"><group id="goneshippingmethod" sortOrder="10" showInWebsite="1" showInStore="1" showInDefault="1" translate="label"><label>GoneShippingMethod</label><field id="active" type="select" sortOrder="10" showInWebsite="1" showInStore="1" showInDefault="1" translate="label"><label>Enabled</label><source_model>Magento\Config\Model\Config\Source\Yesno</source_model></field><field id="name" type="text" sortOrder="20" showInWebsite="1" showInStore="1" showInDefault="1" translate="label"><label>Method Name</label></field><field id="price" type="text" sortOrder="30" showInWebsite="1" showInStore="1" showInDefault="1" translate="label"><label>Price</label><validate>validate-number validate-zero-or-greater</validate></field><field id="sort_order" type="text" sortOrder="40" showInWebsite="1" showInStore="1" showInDefault="1" translate="label"><label>Sort Order</label></field><field id="title" type="text" sortOrder="50" showInWebsite="1" showInStore="1" showInDefault="1" translate="label"><label>Title</label></field><field id="sallowspecific" type="select" sortOrder="60" showInWebsite="1" showInStore="1" showInDefault="1" translate="label"><label>Ship to Applicable Countries</label><frontend_class>shipping-applicable-country</frontend_class><source_model>Magento\Shipping\Model\Config\Source\Allspecificcountries</source_model></field><field id="specificcountry" type="multiselect" sortOrder="70" showInWebsite="1" showInStore="1" showInDefault="1" translate="label"><label>Ship to Specific Countries</label><can_be_empty>1</can_be_empty><source_model>Magento\Directory\Model\Config\Source\Country</source_model></field><field id="specificerrmsg" type="textarea" sortOrder="80" showInWebsite="1" showInStore="1" showInDefault="1" translate="label"><label>Displayed Error Message</label></field></group></section></system></config>
Dans le terminal, naviguez jusqu'à la racine de Magento et exécutez les commandes suivantes :
php bin/magento setup:upgradephp bin/magento cache:flush
Après ces étapes, votre méthode de livraison personnalisée devrait être disponible dans Magento 2. Vous pouvez la configurer via le panneau d'administration de Magento sous Stores > Configuration > Sales > Delivery Methods.
Vous souhaitez découvrir toutes les possibilités que Magento propose aux e-commerçants ? Découvrez sans plus attendre nos formations Magento, ou faites appel à notre agence e-commerce Magento !
Si vous êtes équipé de Magento 2.3 et +, alors ce tutoriel est fait pour vous : apprenez à ajouter une table en BDD !
Retrouvez nos tutoriels sous Magento 1
Créer un module sous Magento 2, c'est la base pour la suite ! Découvrez sans plus attendre comment faire.
Vous souhaitez créer un controller sous Magento 2 ? En 4 étapes seulement, nous vous montrons comment faire facilement !
Nous vous aidons à créer votre propre thème personnalisé sous Magento 2 en quelques étapes seulement. Découvrez notre tuto !
Nous vous aidons à mettre en place, en quelques étapes, la traduction sur l'ensemble de votre site dans la langue que vous souhaitez.
Nous vous aidons à créer vos propres blocs sur Magento 2 : découvrez le tutoriel !
Nous vous aidons à surcharger un template sur votre CMS de prédilection, et ce en 5 étapes seulement.
Nous vous aidons à mettre en place différents éléments essentiels à la personnalisation de votre site Magento 2.
Vous souhaitez créer votre propre plugin sur Magento 2 ? Pas de soucis : on vous aide à le mettre en place !
Découvrez comment créer une interface d'administration fonctionnelle sur Magento 2 en 6 étapes.
Puissants systèmes d'événements sur Magento 2, découvrez comment créer et mettre en place un observeur !
Découvrez comment gérer vos configurations personnalisées sur Magento 2 en quelques étapes seulement.
Téléchargez notre livre blanc SEO !