0

フィルタリングが必要な製品コレクションがあります。このために、「Mage_Catalog_Block_Product_List」をオーバーライドし、次のコードを作成しました。

$collection = parent::_getProductCollection();
$collection->addAttributeToFilter('language', array('in' => 
array('B','C','E')));
$collection->addAttributeToSort('language', 'DESC');

return $this->_productCollection; 

フロントエンドでは、これは E、C、B の形式でソートされます

ソートする属性を「ASC」に設定すると、ソートはB、C、Eの形式になります

ただし、必要なのは、順序を E、B、C に指定することです

これを行う方法はありますか?

ご協力いただきありがとうございます。

アップデート

私は fin_Set を試し、あなたが送ったリンクを見ました。私はコードを試しました:

 $collection = parent::_getProductCollection();
 $collection->addAttributeToFilter('language', 
 array('finset'=>'E','C,E,B'));

return $this->_productCollection;

ただし、これは「E」として設定された製品のみを表示します。提供されたコードも試しましたが、空の製品リストが表示されます。

4

1 に答える 1

2

これを試して:

parent::_getProductCollection()
        ->addAttributeToFilter('language', array('finset'=>'B,C,E'));

return $this->_productCollection;

finsetMySQL のFIND_IN_SETにマップされます。

于 2013-01-31T09:34:10.547 に答える