Я сталкиваюсь с проблемой, что ежедневное обновление правил каталога Magento не работает. Это означает, что в момент истечения срока действия правила каталога изменений цен на товары не происходит, поэтому я должен нажать кнопку применения правила в Admin. Cron настроен и работает. Похоже, что catalogrule / наблюдатель :: 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. Пожалуйста, сообщите, в чем проблема, что правила не проверяются и применяются автоматически?
Ответы:
Недавно у меня была такая же проблема, когда я тестировал новое правило цены для нашего проекта. И причина моей головной боли заключалась в том, что я не замечал, что каждый раз, когда вы создаете новое правило или редактируете некоторые из существующих правил - вы должны нажимать кнопку « Применить правила », чтобы Magento знал об изменениях вашего правила.
источник
Удостовериться, что нажали «Применить правила», не всегда достаточно. Недавно я обнаружил, что если cron не настроен должным образом, в какой-то момент в будущем правила не будут применяться.
Я не мог по-настоящему прибить, когда правила перестали работать. В моем случае у меня было несколько правил, которые применяются на основе группы клиентов (оптовая торговля).
источник
Проверьте, запланирована ли работа
Вы можете сделать это, проверив базу данных или установив это расширение: Aoe_Scheduler
Проверьте, работает ли работа
Создайте скрипт php
run_my_rules.php
и поместите туда только содержимое для функции:dailyCatalogUpdate
затем запустите его из консоли. Посмотри, что происходит.источник