16

特定の製品の関連製品のリストを表示する Magento (ver. 1.8.0.0) のカスタム モジュールに取り組んでいます。

これを実現するために、Mage_Catalog_Block_Product_Listクラスを上書きして独自のモジュールを作成しました。

基本的には、次のように動作します。

コントローラーから製品をキャッチし、製品entity_idをレジストリに保存して、list.php と呼ばれるカスタム作成ブロック内で使用できるようにします。

製品コレクションを埋めるメソッドは次のとおりです。

protected function _getProductCollection()
{
    if (is_null($this->_productCollection)) {
        $prod = Mage::registry('chosenproduct');
        $this->_productCollection = $prod->getRelatedProductCollection()
            ->addAttributeToSelect('required_options')
            ->addAttributeToFilter(array(array('attribute'=>'accessory_manufacturer','neq'=>false)))
            ->addAttributeToSort('position', 'asc')
            ->addStoreFilter()
            ->setPageSize(30)
            ->setCurPage(1);
        ;

        $this->_addProductAttributesAndPrices($this->_productCollection);
        Mage::getSingleton('catalog/product_visibility')->addVisibleInCatalogFilterToCollection($this->_productCollection);
        $this->setProductCollection($this->_productCollection);
    }

    return $this->_productCollection;
}

また、カスタム モジュールのレイアウト .xml に以下を追加して、階層化されたナビゲーションが表示されるようにしました。

<reference name="left">
        <block type="catalog/layer_view" name="catalog.leftnav" after="currency" template="catalog/layer/view.phtml"/>
    </reference>

階層化されたナビゲーションが表示されますが、上記で追加したメソッドで使用されているカスタム コレクションではなく、すべての製品をコレクションとして使用しているようです。

これを使用してカタログ/レイヤーを取得できることも知っています$layer = Mage::getSingleton('catalog/layer');

レイヤ クラスには、prepareProductCollection と setCollection というメソッドもありますが、何らかの理由で機能させることができません。

これについて何か助けはありますか?

基本的に、カスタム コレクションにある製品の階層化されたナビゲーションが必要です。

ありがとう、

4

1 に答える 1

16

私は自分が望んでいたことを達成することができました。クラスMage_Catalog_Model_LayerMage_Catalog_Model_Category

両方に $_customCollection という新しい変数が追加されました。protected $_customProductCollection;

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

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

これら両方のクラス内でこの「customProductCollection」を設定できるメソッドもあります。設定すると、階層化されたナビゲーション/カテゴリの残りのデータは、このコレクションに基づいています。

;)

于 2011-09-21T09:11:55.537 に答える