【发布时间】:2015-05-14 11:58:08
【问题描述】:
我们在 1.9.0 中的目录价格规则存在问题
我们在一个网站上有大约 1000 种产品。
我们应用目录价格规则为 500 种产品提供折扣。
我没有给出目录价格规则的任何日期限制
这些特价只显示到午夜。
第二天,午夜过后,网站上不显示特价。
cron 工作正常。
请帮我找到解决办法。
【问题讨论】:
我们在 1.9.0 中的目录价格规则存在问题
我们在一个网站上有大约 1000 种产品。
我们应用目录价格规则为 500 种产品提供折扣。
我没有给出目录价格规则的任何日期限制
这些特价只显示到午夜。
第二天,午夜过后,网站上不显示特价。
cron 工作正常。
请帮我找到解决办法。
【问题讨论】:
来源:Magento catalog price rule disappears at night
归功于天才“Alexei Yerofeyev”。大多数情况下,我永远不会忘记这个人。
是的,这是 Magento 中的一个错误(或一些超出我理解的逻辑)。当 Magento 在前端显示产品时,它会检查该日期是否有目录规则。用于此检查的日期是您当地的日期,因此在您的情况下为 GMT+5。但是,在应用目录规则时,它使用 GMT 日期。这意味着您在凌晨 5 点之前无法应用规则。
问题出在 Mage_CatalogRule_Model_Action_Index_Refresh::execute() 函数中。您必须在您的扩展程序中或通过文件的本地版本重写此函数/类。
您必须在此处替换第 121 行:app/code/core/Mage/CatalogRule/Model/Action/Index/Refresh.php
$timestamp = $coreDate->gmtTimestamp('Today');
用这一行:
$timestamp = Mage::app()->getLocale()->date(null, null, null, true)->get(Zend_Date::TIMESTAMP);
之后你应该可以应用规则了。
【讨论】: