#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-файлов корзины нет ссылки, вызывающей блок