【发布时间】:2013-01-29 22:00:16
【问题描述】:
期望的结果:
在订单成功页面上,我想显示与用户购买的产品相关的产品。
到目前为止我做了什么:
- 包含相关产品的产品属性
- 在
checkout/success.phtml中添加了echo $this->getChildHtml('related_products_list'); - 扩展 product_list 并设置适当集合的块(注意:这不是重写)
class Namespace_CustomersBought_Block_Product_List extends Mage_Catalog_Block_Product_List {
protected function _construct() {
$orderId = Mage::getSingleton('checkout/session')->getLastRealOrderId();
// some more code to get the products I need in $relatedProducts
$this->setCollection($relatedProducts);
}
}
-
在我的
custom.xml中添加了以下内容(路径正确):<checkout_onepage_success> <reference name="content"> <block type="namespace_customersbought/product_list" name="related_products_list" template="module/product/related_list.phtml" after="-"> </block> </reference> </checkout_onepage_success>
停止工作的地方
它渲染了我在checkout/success.phtml 中添加的div,但是getChildHtml() 调用是空的。
另外,我使用 Magneto Debug - 布局更新包含我的 XML。
我需要什么帮助
我想了解为什么这不起作用。如果我将<checkout_onepage_success> 替换为<cms_index_index> 我会在主页上获得所需的块(没有getChildHtml()),那么为什么它们会有不同的行为呢?
另外 - 理想情况下我不需要修改 checkout/success.phtml 文件,它应该会自动输出。
我知道我遗漏了一些非常简单的东西,但我不知道是什么。
谢谢。
【问题讨论】:
-
也许您应该使用“checkout.success”作为参考名称而不是“内容”。
-
getChildHtml() 在您调用一个块时起作用,该块嵌套在您当前的块调用中。
-
@KalpeshMehta:这就是我所缺少的,我的思路与这个想法非常接近:)
标签: php magento magento-layout-xml