magento目标规则不适用于特定产品

时间:2014-07-20 10:21:02

标签: magento target rule

一个简单的产品属于特定类别其他产品已应用该规则。这发生在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作业。

  1. 此外,当我们保存产品时,预期应该触发catalog_product_save_after事件,导致Mage_CatalogRule模块的观察者方法applyAllRulesOnProduct被执行但仍然没有运气。

  2. 当我点击管理员应用规则时,它就能正常工作。

  3. 我想知道是否magento没有提供任何cron作业/索引器来处理这个问题。

    先谢谢。

1 个答案:

答案 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核心代码中,但不能使用规则模型或产品模型直接调用。谁知道他们为什么那样做。