Nous contacter

Créer une méthode de livraison personnalisée sur Magento 2

SE FAIRE ACCOMPAGNER PAR DES EXPERTS CERTIFIÉS
Création de la structure du moduleCréer votre classeCréer une interface adminActiver le module

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.

Étape 1 : Création de la structure du module

A l’aide du tutoriel “Créer un module Magento 2”, créez votre module Gone/ShippingMethod dans le répertoire app/code.

VOIR LE TUTO CRÉATION DE MODULE MAGENTO 2

Étape 2 : Créer votre classe

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')];
}
}

Étape 3 : Créer l’interface Admin

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>

Étape 4 : Activer le module

Dans le terminal, naviguez jusqu'à la racine de Magento et exécutez les commandes suivantes :

php bin/magento setup:upgrade
php 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.

configuration Magento

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 !

Découvrez nos autres tutos Magento 2 :

Comment ajouter une table en base de données sur Magento 2 ?
9/20/2023

Comment ajouter une table en base de données sur Magento 2 ?

Si vous êtes équipé de Magento 2.3 et +, alors ce tutoriel est fait pour vous : apprenez à ajouter une table en BDD !

410 Gone vous offre quelques tutoriels afin de bien débuter avec Magento ; retrouvez les tous ici !
9/20/2023

410 Gone vous offre quelques tutoriels afin de bien débuter avec Magento ; retrouvez les tous ici !

Retrouvez nos tutoriels sous Magento 1

Créer un module Magento 2 : notre tutoriel
9/20/2023

Créer un module Magento 2 : notre tutoriel

Créer un module sous Magento 2, c'est la base pour la suite ! Découvrez sans plus attendre comment faire.

Créer un controller sous Magento 2 : notre tuto pas à pas
9/20/2023

Créer un controller sous Magento 2 : notre tuto pas à pas

Vous souhaitez créer un controller sous Magento 2 ? En 4 étapes seulement, nous vous montrons comment faire facilement !

Thème personnalisé sous Magento 2 : créez le vôtre rapidement !
9/20/2023

Thème personnalisé sous Magento 2 : créez le vôtre rapidement !

Nous vous aidons à créer votre propre thème personnalisé sous Magento 2 en quelques étapes seulement. Découvrez notre tuto !

Mise en place de la traduction sur Magento 2 : comment faire ?
9/20/2023

Mise en place de la traduction sur Magento 2 : comment faire ?

Nous vous aidons à mettre en place, en quelques étapes, la traduction sur l'ensemble de votre site dans la langue que vous souhaitez.

Créer un bloc sur Magento 2 : découvrez la marche à suivre
9/20/2023

Créer un bloc sur Magento 2 : découvrez la marche à suivre

Nous vous aidons à créer vos propres blocs sur Magento 2 : découvrez le tutoriel !

Surcharger un template sur Magento 2 : comment faire ?
9/20/2023

Surcharger un template sur Magento 2 : comment faire ?

Nous vous aidons à surcharger un template sur votre CMS de prédilection, et ce en 5 étapes seulement.

Tutoriels Magento 2 : 410 vous accompagne sur le CMS e-commerce !
9/20/2023

Tutoriels Magento 2 : 410 vous accompagne sur le CMS e-commerce !

Nous vous aidons à mettre en place différents éléments essentiels à la personnalisation de votre site Magento 2.

Créer un plugin sur Magento 2 en 6 étapes : découvrez la marche à suivre !
9/20/2023

Créer un plugin sur Magento 2 en 6 étapes : découvrez la marche à suivre !

Vous souhaitez créer votre propre plugin sur Magento 2 ? Pas de soucis : on vous aide à le mettre en place !

Interface d'administration sur Magento 2 : comment en créer une ?
9/20/2023

Interface d'administration sur Magento 2 : comment en créer une ?

Découvrez comment créer une interface d'administration fonctionnelle sur Magento 2 en 6 étapes.

Créer un observeur sur Magento 2 : découvrez comment faire
9/20/2023

Créer un observeur sur Magento 2 : découvrez comment faire

Puissants systèmes d'événements sur Magento 2, découvrez comment créer et mettre en place un observeur !

Magento 2 : comment ajouter et récupérer une configuration personnalisée ?
9/20/2023

Magento 2 : comment ajouter et récupérer une configuration personnalisée ?

Découvrez comment gérer vos configurations personnalisées sur Magento 2 en quelques étapes seulement.

Livre

Découvrez les best practices en SEO

Téléchargez notre livre blanc SEO !