Magento:关于订单成功的相关产品

时间:2013-01-29 13:52:40

标签: php magento magento-layout-xml

期望的结果:

在订单成功页面上,我想展示与用户购买的产品相关的产品。

到目前为止我做了什么:

  • 包含相关产品的产品属性
  • echo $this->getChildHtml('related_products_list');
  • 中添加了checkout/success.phtml
  • 阻止扩展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文件,它应该自动输出。

我知道我错过了一些非常简单的事情,但我无法弄清楚是什么。

谢谢。

1 个答案:

答案 0 :(得分:2)

我猜,线路存在问题

<reference name="content">

这会将您的块设置为内容块。但是,您已将输出添加到checkout/success.phtml模板,该模板属于块checkout.success。我建议你用以下

替换xml更新
<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>