Как изменить порядок в поле "Применить код скидки" на последнем шаге оформления заказа?
Я хотел бы изменить порядок "Применить код скидки" в верхней части шага оплаты. У меня была клиентка, которая жаловалась, что порядок этих элементов указывал, что он должен быть введен после оплаты, и поэтому она случайно заплатила, прежде чем добавить свой купон.
Вот что я пробовал до сих пор.
// File: <theme>/Magento_Checkout/layout/checkout_index_index.xml
<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" 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="billing-step" xsi:type="array">
<item name="component" xsi:type="string">uiComponent</item>
<item name="children" xsi:type="array">
<item name="payment" xsi:type="array">
<item name="children" xsi:type="array">
<item name="afterMethods" xsi:type="array">
<item name="children" xsi:type="array">
<item name="discount" xsi:type="array">
<item name="sortOrder" xsi:type="string">1</item>
<item name="config" xsi:type="array">
<!-- <item name="componentDisabled" xsi:type="boolean">true</item> -->
</item>
</item>
</item>
</item>
</item>
</item>
</item>
</item>
</item>
</item>
</item>
</item>
</item>
</argument>
</arguments>
</referenceBlock>
</body>
</page>
Я оставил элемент componentDisabled
в своем примере, чтобы упомянуть, что если я его раскомментирую, поле "Применить код скидки" исчезнет. Этот говорит мне, что я делаю что-то правильно.
Помимо приведенного выше примера, я также пытался вложить <item name="sortOrder" xsi:type="string">1</item>
внутрь <item name="config" xsi:type="array">
, но безрезультатно. Наконец, я перепробовал ряд чисел, включая 500, 99999, 0 и -99999.
Я предполагаю, что нет способа превзойти сортировщик, предоставленный группе способов оплаты, и поэтому их нужно изменить, но я не знаю как. Кто-нибудь может помочь?
1 answers
Решение включало то, что я сделал выше в своем прокомментированном XML-файле в вопросе. Я удалил код скидки из блока <afterMethods>
, а затем скопировал его из источника magento, чтобы он отображался в разделах <beforeMethods>
. XML, который я скопировал для повторного добавления скидки, взят из
/vendor/magento/module-sales-rule/view/frontend/layout/checkout_index_index.xml
Вот мой окончательный XML:
#File: <theme>/Magento_Checkout/layout/checkout_index_index.xml
<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" 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="billing-step" xsi:type="array">
<item name="component" xsi:type="string">uiComponent</item>
<item name="children" xsi:type="array">
<item name="payment" xsi:type="array">
<item name="children" xsi:type="array">
<item name="beforeMethods" xsi:type="array">
<item name="children" xsi:type="array">
<item name="discount" xsi:type="array">
<item name="component" xsi:type="string">Magento_SalesRule/js/view/payment/discount</item>
<item name="children" xsi:type="array">
<item name="errors" xsi:type="array">
<item name="sortOrder" xsi:type="string">0</item>
<item name="component" xsi:type="string">Magento_SalesRule/js/view/payment/discount-messages</item>
<item name="displayArea" xsi:type="string">messages</item>
</item>
</item>
</item>
</item>
</item>
<item name="afterMethods" xsi:type="array">
<item name="children" xsi:type="array">
<item name="discount" xsi:type="array">
<item name="config" xsi:type="array">
<item name="componentDisabled" xsi:type="boolean">true</item>
</item>
</item>
</item>
</item>
</item>
</item>
</item>
</item>
</item>
</item>
</item>
</item>
</item>
</argument>
</arguments>
</referenceBlock>
</body>
</page>
После этого несколько простых обновлений стиля, чтобы удалить неудобную границу.