0

期望的结果:

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

到目前为止我做了什么:

  • 包含相关产品的产品属性
  • 添加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>
    

它停止工作的地方

它呈现了我添加的 div checkout/success.phtml,但getChildHtml()调用为空。

另外,我使用Magneto Debug- 并且布局更新包含我的 XML。

我需要什么帮助

我想了解为什么这不起作用。如果我替换<checkout_onepage_success><cms_index_index>我在主页上获得所需的块(没有getChildHtml()),那么为什么它们会有不同的行为?

另外 - 理想情况下我不需要修改checkout/success.phtml文件,它应该自动输出。

我知道我错过了一些非常简单的东西,但我不知道是什么。

谢谢你。

4

1 回答 1

2

估计线路有问题

<reference name="content">

这会将您的块设置为内容块的子级。但是,您已将输出添加到checkout/success.phtml属于 block 的模板中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>
于 2013-01-29T14:00:16.543 回答