我面临Magento的目录规则每日更新不起作用的问题。这意味着当目录规则的到期日期到来时,产品价格没有任何变化,因此我必须在管理员中按规则应用按钮。Cron已配置并正常工作。看来catalogulule / observer :: dailyCatalogUpdate方法应该每天自动检查并应用规则,但事实并非如此(我也尝试过手动启动它)。这是Magento的核心代码:
<!--file: app/code/core/Mage/CatalogRule/etc/config.xml-->
<crontab>
<jobs>
<catalogrule_apply_all>
<schedule>
<cron_expr>*/1 * * * *</cron_expr>
</schedule>
<run>
<model>catalogrule/observer::dailyCatalogUpdate</model>
</run>
</catalogrule_apply_all>
</jobs>
...
</crontab>
观察员:
/*file app/code/core/Mage/CatalogRule/Model/Observer.php*/
public function dailyCatalogUpdate($observer)
{
Mage::getResourceSingleton('catalogrule/rule')->applyAllRulesForDateRange();
return $this;
}
我成功修改了如下观察者方法:
/*file app/code/core/Mage/CatalogRule/Model/Observer.php*/
public function dailyCatalogUpdate($observer)
{
Mage::getModel('catalogrule/rule')->getResourceCollection()
->walk(array(
Mage::getResourceSingleton('catalogrule/rule'),
'updateRuleProductData'
));
Mage::getResourceSingleton('catalogrule/rule')->applyAllRulesForDateRange();
return $this;
}
这样,每天都会检查并应用规则,如果规则过期,则产品价格会发生变化。我不认为这是Magento的错误。请告知未自动检查和应用规则的问题是什么?
是否有任何错误记录到您的PHP错误日志或cron_schedule表的messages列中?我假设实际上已经调用了cron,因为您指出通过修改观察者方法已经取得了一些成功。
—
davidalger 2013年
您也可以在原始观察者中进行一些日志调用,看看是否被调用。为了安全起见。
—
Petar Dzhambazov