我有一个几乎完整的解决方案,可以按地区选择性地展示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"answers"like"代替"eq",但都没有成功。
谢谢。
附言:查看相同问题的一个更简单的方法是查看以下代码:
->addFieldToFilter(array(
array('attribute'=>'product_region','eq'=>'49')
))
使用finset
而不是eq
(多个选择值以CSV格式存储)