我正在尝试以编程方式创建目录定价规则(特定客户群的类别百分比折扣)。但它没有以编程方式应用。即使您转到目录价格规则部分,然后按“应用规则”按钮 - 它也不会被应用。它仅适用于您在后端编辑此规则,保存而不进行任何修改,然后按“应用规则”。 这是代码:
$catalogRule = Mage::getModel('catalogrule/rule');
$catalogRule->setName($ruleName)
->setIsActive(true)
->setWebsiteIds(array(1))
->setCustomerGroupIds(array($group->getId()))
->setSimpleAction('by_percent')
->setDiscountAmount($discountAmount);
$categoryCondition = Mage::getModel('catalogrule/rule_condition_combine')
->setType('catalogrule/rule_condition_product')
->setAttribute('category_ids')
->setOperator('==')
->setValue($categoryId);
$catalogRule->getConditions()->addCondition($categoryCondition);
$catalogRule->save();
$catalogRule->applyAll();
Mage::app()->removeCache('catalog_rules_dirty');
谢谢你的帮助!
答案 0 :(得分:1)
$categoryCondition
中有错误。您应该使用catalogrule/rule_condition_product
模型,而不是catalogrule/rule_condition_combine
。
此外类别ID值应为 字符串类型 。这真的很奇怪,但是使用整数值它不起作用(在1.6.1.0版本上测试)。
所以,这是解决方案:
$categoryCondition = Mage::getModel('catalogrule/rule_condition_product')
->setType('catalogrule/rule_condition_product')
->setAttribute('category_ids')
->setOperator('==')
->setValue("23"); // notice: this is should be a string!