如何在多个位置显示magento块?

时间:2013-02-22 00:44:45

标签: magento block

我正在尝试在其正常位置以及页面底部显示交叉销售区块。涉及多个phtml模板文件,因此$ this-> getChildHtml在第二个位置不起作用,因为该块现在设置为仅在cart.phtml文件中。

总之,如何在多个模板文件中显示相同的块?我不想将这些更改放在我的local.xml中,也不想修改核心Magento模板文件。

1 个答案:

答案 0 :(得分:0)

此块的核心布局指令设置为 checkout.cart 块的子级:

<checkout_cart_index translate="label">
    <!-- ... -->
    <reference name="content">
        <block type="checkout/cart" name="checkout.cart">
            <!-- ... -->
            <block type="checkout/cart_crosssell" name="checkout.cart.crosssell" as="crosssell" template="checkout/cart/crosssell.phtml"/>
        </block>
    </reference>
 </checkout_cart_index>

要将其添加到页脚,可能只需要在 local.xml 中建立另一个父子关系:

<checkout_cart_index>
    <reference name="footer">
        <action method="insert"><!-- or "append" to add to the end -->
            <child>checkout.cart.crosssell</child>
        </action>
    </reference>
</checkout_cart_index>

此方法依赖于库存 page / html / footer.phtml 模板,该模板包含空getChildHtml()调用,这会导致它呈现所有子块。

请注意,页脚块类Mage_Page_Block_Html_Footer具有永不过期的block_html缓存生存期,它不会为其缓存条目评估子内容。< / strong>您可能需要禁用此块的缓存或重写块类以考虑交叉块的各种内容。