自動車部品を販売するサイトを運営しています。カテゴリを Make -> Model -> Year に設定しました。ここから、フィルタリングは属性によって行われます。ブレーキ、ホイール、エンジンなど…</p>
これにより、期待どおりにコレクションがフィルター処理されますが、年に到達したら、ユニバーサル カテゴリのアイテムも含めたいと思います。IE コレクションには、特定の車のアイテムに加えて、すべての車の「ユニバーサル」アイテムを含める必要があります。
この Magento を見つけました: 2 つの製品コレクションを 1 つにマージする方法は? これは私が望んでいるようですが、これをどこに実装する必要があるか正確にはわかりません。
List.php、Layer.php、および Category.php には getCollection() メソッドがあり、上記のリンクのコードを実装しようとしましたが、成功しませんでした。List.php に含めると、コレクションはマージされているように見えますが、Universal 製品では属性フィルタリングが適用されません。
次のように、Category.php の getProductCollection 関数を編集してみました。
public function getProductCollection()
{
$collection = Mage::getResourceModel('catalog/product_collection')
->setStoreId($this->getStoreId())
->addCategoryFilter($this);
//return $collection;
$universalCollection = Mage::getModel('catalog/category')->load(18)->getProductCollection();
$merged_ids = array_merge($collection->getAllIds(), $universalCollection->getAllIds());
// can sometimes use "getLoadedIds()" as well
$merged_collection = Mage::getResourceModel('catalog/product_collection')
->addFieldToFilter('entity_id', $merged_ids)
->addAttributeToSelect('*');
return $merged_collection;
}
しかし、これは私に:「致命的なエラー:「200」の最大関数ネストレベルに達しました、中止します!」
誰かがアドバイスを与えることができれば、それは大歓迎です。