0

我正在尝试创建一个 magento 目录价格规则,其条件结合使用“任何”而不是“全部”

以下代码创建了一个具有两个条件的规则 - 但它们使用 all 组合在一起。有谁知道如何实现这一目标?我正在使用 magento 1.7.0.2(社区版)

$skuCondition = Mage::getModel('catalogrule/rule_condition_product')
                    ->setType('catalogrule/rule_condition_product')
                ->setAggregator('any')
                ->setAttribute('category_ids')
                    ->setOperator('==')
                ->setValue('18');


$skuCondition2 = Mage::getModel('catalogrule/rule_condition_product')
                    ->setType('catalogrule/rule_condition_product')
                ->setAttribute('category_ids')
                    ->setOperator('==')
                ->setValue('40');

 $catalogPriceRule->getConditions()->addCondition($skuCondition);
 $catalogPriceRule->getConditions()->addCondition($skuCondition2);

$catalogPriceRule->save(); 
4

1 回答 1

0

通过改变我的方法并使用一个具有不同条件的规则,我设法实现了如下相同的目标。注意使用 '()' 而不是 '==' 来表示 'is any of'。我通过创建规则并查看数据库表 'catalogrule' 中的数据来找到此解决方案,如果您选择我发现的列 'condition_serialized'

8:"operator";s:2:"()";s

其中“()”是运算符

所以我的最终代码是:

$catalogPriceRule->setName($name)
                 ->setDescription('')
                 ->setIsActive(1)
                 ->setWebsiteIds(array($websiteId))
                 ->setCustomerGroupIds(array($customerGroupId))
                 ->setFromDate('')
                 ->setToDate('')
                 ->setSortOrder('')
                 ->setSimpleAction($actionType)
                 ->setDiscountAmount($discount)
                 ->setStopRulesProcessing(0);

$skuCondition = Mage::getModel('catalogrule/rule_condition_product')
                ->setType('catalogrule/rule_condition_product')
                ->setAggregator('any')
                ->setAttribute('category_ids')
                ->setOperator('()')
                ->setValue('18,40');

$catalogPriceRule->getConditions()->addCondition($skuCondition);
$catalogPriceRule->save();  

希望对某人有所帮助!

于 2013-09-03T14:44:56.767 回答