一个简单的产品属于特定类别其他产品已应用该规则。这发生在magento enterprise 1.13.0.1版本上。 规则适用于该类别,但当我查看catalogrule_product表时,该产品没有条目。这意味着该产品不适用任何规则。
http://www.solvingmagento.com/quick-tip-magento-catalog-price-rules-dont-work/是我提到的链接。
我想知道如果由于某种原因产品没有应用目标规则,那么: 1.是否没有可以处理此问题的cron作业并填充catalogrule_product表。 如果是,则执行哪个cron作业。
此外,当我们保存产品时,预期应该触发catalog_product_save_after事件,导致Mage_CatalogRule模块的观察者方法applyAllRulesOnProduct被执行但仍然没有运气。
当我点击管理员应用规则时,它就能正常工作。
我想知道是否magento没有提供任何cron作业/索引器来处理这个问题。
先谢谢。
答案 0 :(得分:0)
如果您在magento后端之外创建产品(使用php或soap),则在调用$ product-> save()方法后可能必须使用以下代码...
public function applyActiveRulesToProduct($productId)
{
try {
$product = Mage::getModel('catalog/product') -> load($productId);
$rules = Mage::getModel('catalogrule/rule')->getCollection()->addFieldToFilter('is_active', 1);
foreach ($rules as $rule) {
$rule->applyAllRulesToProduct($product);
}
return "Applied rules to " . $productId;
} catch (Exception $e) {
return $e->getMessage();
}
}
这是我为自己的soap api扩展编写的代码。我无法使用applyToProduct(product,websiteIds)来应用规则,但在规则数组上使用带有过滤器的applyAllRulesToProduct似乎可以解决问题。
仅供参考,此代码也包含在CatalogRule.Rule.php核心代码中,但不能使用规则模型或产品模型直接调用。谁知道他们为什么那样做。