我有一个几乎完整的解决方案,可以按区域选择性地显示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('*');
如果客户's region is UK, and the product' s区域为UK,则过滤器按预期工作 .
如果客户's region is UK, and the product' s区域是英国和欧洲,则过滤器不能按预期工作(未给出结果) .
如何调整过滤器以获得所需的行为?
我尝试使用'in'和'like'而不是'eq',但没有成功 .
谢谢 .
附:查看同一问题的更简单方法是查看以下代码:
->addFieldToFilter(array(
array('attribute'=>'product_region','eq'=>'49')
))
1 回答
使用
finset
而不是eq
(多个选择值以CSV格式存储)