複数選択の複数の値が Magento のカタログまたはカタログ検索ページでフィルターとして使用される場合、複数の値は論理和で結合されます。つまり、結果は、これらの属性のいずれかを持つ製品の和集合になります。
選択した属性を持つ一連の製品の共通部分、つまり、選択したすべての属性を持つ製品のみを取得するにはどうすればよいですか?
Magentoの標準的な動作では、すでに示したLucasmusのように1つの値のみをフィルタリングできます。したがって、core / Mage / Catalog / Model / Layer / Filter/Attribute.phpモデルの動作を編集するカスタマイズまたはモジュールを使用しているようです。また、クラスMage_Catalog_Model_Resource_Eav_Mysql4_Layer_Filter_Attributeを書き直す必要があります。これは、要求した動作を変更できるクラスです。そのクラスでは、メソッド
applyFilterToCollection($filter,$value)
フィルタリングを行うための対応するSQLコードを作成します。現在、モジュールまたは拡張機能はおそらくOR表記を使用しているか、次のようなものを使用しています。
$connection->quoteInto("{$tableAlias}.value IN (?)", $value)
、
そのため、フィルタリングする値のいずれかを検索します。ANDを実現するには、$ valueを個別の部分に分割し、個々の値ごとにwhere句を使用して、このメソッドを書き直す必要があります。それが理にかなっていることを願っています。