レイヤードナビゲーションブロックをカスタムページに追加する


9

Magentoでは、レイヤードナビゲーションブロックが製品リストページで適切に機能します。

このブロックは、製品のカスタムリストがあるカスタムページに正常にコピーできますか?

注:ブロックをXMLに追加し、それを呼び出すだけでgetChildHtml('blockname')はうまくいきません。


2
階層型ナビゲーションは現在のカテゴリの製品から構築されるため、階層型ナビゲーションブロックコードにデフォルトのカテゴリを追加する必要があります。
サンダーマンジェル

ヘルプの+1、複数のカテゴリの複数の製品(たとえば、取引製品)がある場合はどうなりますか?
pzirkind 2013年

2
そのために特別なカテゴリーを作ります。他の方法もあるかもしれませんが、これが間違いなく最も簡単でスケーラブルな方法です。
サンダーマンジェル

1
本当にしたい場合は、カスタムカテゴリを作成する必要があります。階層化されたナビゲーションは、操作するカテゴリがあることを本当に期待しています。多くのクラスをオーバーライドしないと、単純なProductCollectionを取得できません。
リックカイパーズ2013年

回答:


5

基本的にあなたがしなければならないことはMage_Catalog_Block_Product_Listextend/overwriteからであり、メソッドを書き直します: (List.php)getProductCollection()

protected function _getProductCollection()
{
    if (is_null($this->_productCollection)) {
        // Build collection and set it
        $collection = "...";
        $this->setProductCollection($collection);
    }

    return $this->_productCollection;
}

それが完了すると、Mage_Catalog_Model_Layerクラスとの両方が上書きMage_Catalog_Model_Categoryされ、新しい変数が導入されました。

protected $_customProductCollection;

getProductCollection()両方のクラスでを上書きし、メソッドの最初にこれを追加しました:

if(isset($this->_customProductCollection)){
    return $this->_customProductCollection;
}

"customProductCollection"これらのクラスの両方でこれを設定できるメソッドもあります。一度設定すると、レイヤードナビゲーション/カテゴリの残りのデータは、このコレクションに基づきます

最初の質問と回答はこちらで確認してください。

幸運を ;)


customproductcollectionを設定するためのこのメソッドは何ですか?どこから呼び出しますか?
easymoden00b 2015
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.