Zunächst müssen wir verstehen, wie die Magento-Geschenknachricht auf der Warenkorbseite funktioniert.
vendor/magento/module-gift-message/view/frontend/templates/cart/gift_options.phtml
Diese Datei ist unser Licht. Wir werden viel Zeit sparen, wenn wir die Logik verstehen.
window.giftOptionsConfig
: Diese globale Variable, die für die Konfiguration verwendet wird. Wir sollten es an der Kasse neu erstellen.
Beginnen wir mit der Implementierung unserer benutzerdefinierten Logik. Erstellen Sie ein neues Modul und fügen Sie folgende Logik hinzu:
app / code / Vendor / CheckoutDemo / 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="content">
<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="config" xsi:type="array">
<item name="template" xsi:type="string">Vendor_CheckoutDemo/shipping</item>
</item>
<item name="children" xsi:type="array">
<!--Gift Options Cart-->
<item name="giftOptionsCart" xsi:type="array">
<item name="displayArea" xsi:type="string">gift_options</item>
<item name="component" xsi:type="string">Magento_GiftMessage/js/view/gift-message</item>
<item name="config" xsi:type="array">
<item name="template" xsi:type="string">Magento_GiftMessage/gift-message</item>
<item name="formTemplate" xsi:type="string">Magento_GiftMessage/gift-message-form</item>
</item>
</item>
<!--End Gift Option-->
</item>
</item>
</item>
</item>
</item>
</item>
</item>
</item>
</item>
</argument>
</arguments>
</referenceBlock>
<block class="Magento\Framework\View\Element\Template" name="gift.messages.data" template="Vendor_CheckoutDemo::gift_options.phtml"/>
</referenceBlock>
</body>
</page>
Es gibt 3 Notizen:
-Versandschritt verwendet unsere benutzerdefinierte Versand-HTML-Vorlage. Es ist einfacher, unsere benutzerdefinierte Region hinzuzufügen.
<item name="shippingAddress" xsi:type="array">
<item name="config" xsi:type="array">
<item name="template" xsi:type="string">Vendor_CheckoutDemo/shipping</item>
</item>
-Unser Geschenkbereich: Ich habe den Inhalt von kopiert vendor/magento/module-gift-message/view/frontend/layout/checkout_cart_index.xml
.
<!--Gift Options Cart-->
<item name="giftOptionsCart" xsi:type="array">
<item name="displayArea" xsi:type="string">gift_options</item>
<item name="component" xsi:type="string">Magento_GiftMessage/js/view/gift-message</item>
<item name="config" xsi:type="array">
<item name="template" xsi:type="string">Magento_GiftMessage/gift-message</item>
<item name="formTemplate" xsi:type="string">Magento_GiftMessage/gift-message-form</item>
</item>
</item>
<!--End Gift Option-->
-Die Geschenkkonfiguration
<block class="Magento\Framework\View\Element\Template" name="gift.messages.data" template="Vendor_CheckoutDemo::gift_options.phtml"/>
Erstellen Sie app / code / Vendor / CheckoutDemo / view / frontend / templates / gift_options.phtml
<script>
window.giftOptionsConfig = window.checkoutConfig.giftMessageConfig;
</script>
Wir verwenden die giftOptionsConfig
globale Variable, da sie von der js-Logik der Geschenknachricht verwendet wird.
app / code / Vendor / CheckoutDemo / etc / frontend / di.xml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<type name="Magento\Checkout\Model\CompositeConfigProvider">
<arguments>
<argument name="configProviders" xsi:type="array">
<item name="gift_message_checkout_config_provider" xsi:type="object">Vendor\CheckoutDemo\Model\GiftMessageConfigProvider\Proxy</item>
</argument>
</arguments>
</type>
</config>
app / code / Vendor / CheckoutDemo / Model / GiftMessageConfigProvider.php
<?php
namespace Vendor\CheckoutDemo\Model;
class GiftMessageConfigProvider extends \Magento\GiftMessage\Model\GiftMessageConfigProvider
{
public function getConfig()
{
$config = parent::getConfig();
return ['giftMessageConfig' => $config];
}
}
Erstellen Sie die Versand-HTML, kopieren Sie den Inhalt von vendor/magento/module-checkout/view/frontend/web/template/shipping.html
in unsere benutzerdefinierte app/code/Vendor/CheckoutDemo/view/frontend/web/template/shipping.html
. Und fügen Sie unsere benutzerdefinierte Geschenknachrichtenregion hinzu:
App / Code / Anbieter / CheckoutDemo / Ansicht / Frontend / Web / Vorlage / Versand.html
......
<div class="step-title" translate="'Gift Options'" data-role="title" />
<each args="getRegion('gift_options')" render="" />
......
Ergebnis: