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、ブロックに属するテンプレートに出力を追加しました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 に答える