2013-08-04 75 views
1

我有一個幾乎完整的解決方案,按區域選擇性地顯示Magento產品。Magento產品收集按自定義篩選多個選擇屬性

的地區是:世界

所有客戶都已經分配到的區域,這是我通過變量$ customerRegion提供的
英國
歐洲
美洲
中東
休息。

我所有的Magento產品都有一個自定義屬性'product_region',它具有可用於多選的區域選項。

list.phtml應該只顯示符合客戶區域的產品。我有一個部分工作的解決方案:

$_productCollection = Mage::getResourceModel('catalog/product_collection') 
    ->addCategoryFilter(Mage::getSingleton('catalog/layer')->getCurrentCategory()) 
    ->addAttributeToFilter('product_region', 
     array('eq' => Mage::getResourceModel('catalog/product') 
      ->getAttribute('product_region') 
      ->getSource() 
      ->getOptionId($customerRegion) 
     ) 
    ) 
    ->addAttributeToSelect('*'); 

如果客戶的地區是英國和產品的地區是英國,過濾器工作正常。
如果客戶的地區是英國,而產品的地區是英國和歐洲,則過濾器無法按預期工作(未給出結果)。

如何調整過濾器以獲得所需的行爲?

我嘗試過使用'in'和'like'代替'eq',但沒有成功。

謝謝。

P.S.查看同一問題的一個更簡單的方法是看下面的代碼:

->addFieldToFilter(array(
    array('attribute'=>'product_region','eq'=>'49') 
)) 

回答

4

使用finset而不是eq(多選值存儲在CSV格式)

+0

謝謝! 'finset'是解決方案。 我已經查詢了http://www.magentocommerce.com/wiki/1_-_installation_and_configuration/using_collections_in_magento 所有過濾條件代碼,如果您之前沒有看到過,finset意味着FIND_IN_SET() – TonyC83

相關問題