Я стикаюся з проблемою, що щоденне оновлення каталогу Magento не працює. Це означає, що не настає зміни цін на продукти, коли настає дата закінчення правила каталогу, тому я повинен натиснути кнопку застосувати правило в адміністраторі. Cron налаштований і працює. Здається, що каталогrule / 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. Підкажіть, будь ласка, у чому полягає проблема в тому, що правила не перевіряються та застосовуються автоматично?