首页 文章

Magento产品系列按自定义多选属性筛选

提问于
浏览
1

我有一个几乎完整的解决方案,可以按区域选择性地显示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 回答

  • 4

    使用 finset 而不是 eq (多个选择值以CSV格式存储)

相关问题