2011-12-28 67 views
2

我試圖以編程方式創建目錄價格規則(特定客戶組的類別的百分比折扣)。但它沒有以編程方式應用。即使您轉到「目錄價格規則」部分,然後按下「應用規則」按鈕 - 它不會被應用。它僅適用於在後端編輯此規則,不加任何修改地保存它,然後按「應用規則」。 這裏是代碼:不能以編程方式應用目錄價格規則

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

謝謝你的幫忙!

回答

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! 
+0

真棒!你好,非常感謝! – Snowcore 2011-12-28 17:28:15

相關問題