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('*');

如果客户所在地区为英国,产品所在地区为英国,则过滤器按预期工作。
如果客户的地区是英国,而产品的地区是英国和欧洲,则过滤器无法按预期工作(未给出结果)。

如何调整过滤器以获得所需的行为?

我曾尝试使用 'in' 和 'like' 而不是 'eq' 但没有成功。

谢谢你。

PS查看相同问题的一种更简单的方法是查看以下代码:

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

1 回答 1

4

使用finset代替eq(多个选择值以 CSV 格式存储)

于 2013-08-05T07:14:13.197 回答