childHtml Block的精确放置(意外结果)

时间:2011-04-13 15:15:07

标签: magento

我正在尝试在另一个phtml页面中的特定位置放置一个新的phtml块,但我没有得到我预期的结果 - 任何建议都会非常感激。

具体来说,我在模块的xml布局文件中为购物车页面创建了一个新的childHtml块:

<layout version="0.1.0">
    <checkout_cart_index>
        <reference name="head">
            <action method="addJs"><script>varien/product.js</script></action>
            <action method="addItem"><type>js_css</type><name>calendar/calendar-win2k-1.css</name><params/><!--<if/><condition>can_load_calendar_js</condition>--></action>
            <action method="addItem"><type>js</type><name>calendar/calendar.js</name><!--<params/><if/><condition>can_load_calendar_js</condition>--></action>
            <action method="addItem"><type>js</type><name>calendar/calendar-setup.js</name><!--<params/><if/><condition>can_load_calendar_js</condition>--></action>
        </reference>
        <reference name="content">
            <block type="delivery/frontend_checkout_cart_delivery" name="delivery.container" as="delivery" template="unleaded/delivery/checkout/cart/shipping/delivery.phtml"/>
            <block type="core/html_calendar" name="delivery_html_calendar" as="delivery_html_calendar" template="page/js/calendar.phtml"/>
        </reference>
    </checkout_cart_index>
</layout>

接下来,我在我修改后的$this->getChildHtml('delivery')模板中拨打了checkout/cart/shipping.phtml,我希望将其放置在其中:

....
<?php foreach ($_shippingRateGroups as $code => $_rates): ?>
    ....
    <?php foreach ($_rates as $_rate): ?>
        ....
        <li>
        <?php if ($_rate->getCode() == 'delivery'): ?>
            <?php echo $this->getChildHtml('delivery'); ?>
        <?php endif; ?>
        </li>
        ....
    <?php endforeach; ?>
    ....
<?php endforeach; ?>
....

我想要/期望的是看到我插入的块输出,而是在页面的最底部输出(参见屏幕截图)。我几乎可以肯定我的错误是基于xml /布局的错误,但我不知道是什么? childHtml called inside ul, output at end of page

1 个答案:

答案 0 :(得分:0)

您从getChildHtml()块中调用checkout.cart.shipping,但将新块添加到content。而不是,

<reference name="content">

...你只需说出你的新人将成为孩子的哪个区块。

<reference name="checkout.cart.shipping">