期望的结果:
在订单成功页面上,我想展示与用户购买的产品相关的产品。
到目前为止我做了什么:
echo $this->getChildHtml('related_products_list');
checkout/success.phtml
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
文件,它应该自动输出。
我知道我错过了一些非常简单的事情,但我无法弄清楚是什么。
谢谢。
答案 0 :(得分:2)
我猜,线路存在问题
<reference name="content">
这会将您的块设置为内容块。但是,您已将输出添加到checkout/success.phtml
模板,该模板属于块checkout.success
。我建议你用以下
<checkout_onepage_success>
<reference name="checkout.success">
<block type="namespace_customersbought/product_list" name="related_products_list"
template="module/product/related_list.phtml" after="-">
</block>
</reference>
</checkout_onepage_success>