Magento — изменить положение блока / элемента в корзине покупок

#xml #magento #layout #cart

#xml #magento #макет #Корзина

Вопрос:

Я купил пользовательское расширение для использования в моей корзине покупок, но я хочу изменить положение. На данный момент элемент / блок расположен под всей формой корзины, где, как я хочу, он должен быть размещен прямо под блоком кода купона или внутри него, как показано на этом рисунке:

введите описание изображения здесь XML-файл расширения для первоначального размещения расширения является:

 <checkout_cart_index>
  <reference name="content">
        <block type="ext/custom" name="ext.custom"></block>         
  </reference>
</checkout_cart_index>
  

В моем checkout.xml файл раздела «мой купон» выглядит следующим образом:

 <checkout_cart_index translate="label">
    <reference name="content">
        ......
        <block type="checkout/cart" name="checkout.cart">
            <block type="checkout/cart_coupon" name="checkout.cart.coupon" as="coupon" template="checkout/cart/coupon.phtml"/>
        </block>
        ......
    </reference>
</checkout_cart_index>
  

Ответ №1:

Расширение ссылается не на тот блок, который должен находиться в этой позиции. Он должен ссылаться на соответствующего родительского элемента. В вашем коде он ссылается на «контент», что позволяет разместить его на самом высоком уровне страницы. Итак, переместив его в checkout.cart, вы помещаете его во вспомогательное поле, на которое вы указываете.

 <checkout_cart_index>
  <reference name="checkout.cart">
        <block type="ext/custom" name="ext.custom"></block>         
  </reference>
</checkout_cart_index>
  

Изначально я думал, что cart.phtml автоматически перечисляет всех своих дочерних элементов, однако это не так. Кроме того, использование before и after не является необходимым, поскольку вы размещаете дочерние блоки в файле шаблона, вызывая их уникальным образом.

Откройте cart.phtml в вашей теме и вызовите свой блок под купоном

  <?php echo $this->getChildHtml('coupon') ?>
 <?php echo $this->getChildHtml('ext.custom') ?>
  

Это должно устранить вашу проблему.

Комментарии:

1. Спасибо, Роб. Я только что попробовал это, но когда я вношу изменения, блок теперь полностью исчезает со страницы. Я использую пользовательскую тему, поэтому я также вернулся к магазину magento по умолчанию, на случай, если у меня были какие-либо конфликты с моей темой, но она по-прежнему не отображается. У вас есть другие идеи?

2. Я отредактировал свой ответ, так что это должно решить вашу проблему.

3. Как странно, это все еще не работает. Ничего не добавляется. Кэш отключен, но также просто очистил мой кэш и добавил as="ext_custom" идентификатор в XML-файл и использовал его в getChildHtml , но по-прежнему ничего

4. Как устанавливается шаблон? Добавляется ли он программно в пользовательский тип блока?

5. Насколько я могу судить, блок вызывается только в собственном XML-файле расширений. Ни в одном из phtml-файлов корзины нет ссылки, вызывающей блок