Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Magento Can';不能以编程方式应用目录价格规则_Magento - Fatal编程技术网

Magento Can';不能以编程方式应用目录价格规则

Magento Can';不能以编程方式应用目录价格规则,magento,Magento,我试图以编程方式创建目录价格规则(特定客户组的类别折扣百分比)。但它不是以编程方式应用的。即使您转到目录价格规则部分,并按下“应用规则”按钮,也不会应用它。仅当您在后端编辑此规则,保存它而不进行任何修改,然后按“应用规则”时,它才适用。 代码如下: $catalogRule = Mage::getModel('catalogrule/rule'); $catalogRule->setName($ruleName) ->setIsActive(true) ->

我试图以编程方式创建目录价格规则(特定客户组的类别折扣百分比)。但它不是以编程方式应用的。即使您转到目录价格规则部分,并按下“应用规则”按钮,也不会应用它。仅当您在后端编辑此规则,保存它而不进行任何修改,然后按“应用规则”时,它才适用。 代码如下:

$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');

谢谢你的帮助

您在
$categoryCondition
中有错误。您应该使用
catalogrule/rule\u condition\u产品
模型,而不是
catalogrule/rule\u condition\u组合
此外类别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!