我正在尝试在其正常位置以及页面底部显示交叉销售区块。涉及多个phtml模板文件,因此$ this-> getChildHtml在第二个位置不起作用,因为该块现在设置为仅在cart.phtml文件中。
总之,如何在多个模板文件中显示相同的块?我不想将这些更改放在我的local.xml中,也不想修改核心Magento模板文件。
答案 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>您可能需要禁用此块的缓存或重写块类以考虑交叉块的各种内容。