特定の製品の関連製品のリストを表示する 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 というメソッドもありますが、何らかの理由で機能させることができません。
これについて何か助けはありますか?
基本的に、カスタム コレクションにある製品の階層化されたナビゲーションが必要です。
ありがとう、