Как изменить порядок в поле "Применить код скидки" на последнем шаге оформления заказа?


Я хотел бы изменить порядок "Применить код скидки" в верхней части шага оплаты. У меня была клиентка, которая жаловалась, что порядок этих элементов указывал, что он должен быть введен после оплаты, и поэтому она случайно заплатила, прежде чем добавить свой купон.

Goal: reorder Apply Discount Code

Вот что я пробовал до сих пор.

// 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.

Я предполагаю, что нет способа превзойти сортировщик, предоставленный группе способов оплаты, и поэтому их нужно изменить, но я не знаю как. Кто-нибудь может помочь?

Author: jamil, 2017-03-30

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>

После этого несколько простых обновлений стиля, чтобы удалить неудобную границу.

 1
Author: jamil, 2017-06-19 16:35:19