1. Déclarez la dépendance à la sortie du module
app / code / NameSpace / ModuleName / 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_ModuleName" setup_version="0.0.1" active="true">
<sequence>
<module name="Magento_Checkout"/>
</sequence>
</module>
</config>
2. Écraser la disposition de paiement
app / code / NameSpace / ModuleName / view / frontend / layout / checkout_index_index.xml
<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<body>
<referenceBlock name="checkout.root">
<arguments>
<argument name="jsLayout" xsi:type="array">
<item name="components" xsi:type="array">
<item name="checkout" xsi:type="array">
<item name="children" xsi:type="array">
<item name="steps" xsi:type="array">
<item name="children" xsi:type="array">
<item name="shipping-step" xsi:type="array">
<item name="children" xsi:type="array">
<item name="shippingAddress" xsi:type="array">
<item name="children" xsi:type="array">
<item name="shippingAdditional" xsi:type="array">
<item name="component" xsi:type="string">uiComponent</item>
<item name="displayArea" xsi:type="string">shippingAdditional</item>
<item name="children" xsi:type="array">
<item name="additional_block" xsi:type="array">
<item name="component" xsi:type="string">NameSpace_ModuleName/js/view/checkout/shipping/additional-block</item>
</item>
</item>
</item>
</item>
</item>
</item>
</item>
</item>
</item>
</item>
</item>
</item>
</argument>
</arguments>
</referenceBlock>
</body>
</page>
3. Créer un composant d'interface utilisateur JavaScript
Le contrôle de Magento 2 est géré en JavaScript (avec Knockout). Vous devez donc créer un composant JS personnalisé. Il créera le lien entre le composant d'interface utilisateur de paiement et votre modèle HTML personnalisé.
app / code / NameSpace / ModuleName / view / frontend / web / js / view / checkout / shipping / additional-block.js
définir([
«uiComponent»
], fonction (Composant) {
«utiliser strictement»;
return Component.extend ({
par défaut: {
modèle: 'NameSpace_ModuleName / checkout / shipping / additional-block'
}
});
});
4. Créer un modèle HTML
Créez ensuite le modèle HTML qui va s'afficher lors du paiement.
app / code / NameSpace / ModuleName / view / frontend / web / template / checkout / shipping / additional-block.html
<div class="checkout-block" id="block-custom">
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</p>
<p>Cum sociis natoque penatibus et magnis dis parturient montes.</p>
</div>
5. Vider le cache
Enfin, exécutez les commandes suivantes:
php bin/magento cache:clean
php bin/magento setup:upgrade
chmod -R 777 var/*
Téléchargez un exemple complet de module de démonstration ici