我正在尝试在其正常位置以及页面底部显示交叉销售块。涉及的 phtml 模板文件不止一个,因此 $this->getChildHtml 在第二个位置不起作用,因为该块设置为现在仅位于 cart.phtml 文件中。
总之,如何在多个模板文件中显示相同的块?我不想将这些更改放在我的 local.xml 中,也不想修改核心 Magento 模板文件。
该块的核心布局指令设置为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>
这种方法依赖于 stock page/html/footer.phtml模板,该模板包含一个空调getChildHtml()
用,这会导致它呈现所有子块。
请注意,页脚块类Mage_Page_Block_Html_Footer
具有永不过期的block_html
缓存生命周期,并且它不会评估其缓存条目的子内容。您可能需要禁用此块的缓存或重写块类以说明交叉销售块的不同内容。