我到处搜索,发现它可以通过cron job enable / disable来完成,但我还没有找到如何,或者是否有另一种方法可以显示如何从一个日期显示一个静态块,并且自动从另一个日期起飞?谢谢!
答案 0 :(得分:0)
您可以创建一个静态块并在任何地方显示它,并拥有一个在指定日期启用/禁用它的cron。
为此,请创建如下的cron作业。
<crontab>
<jobs>
<cronjob_name>
<schedule><cron_expr>*/5 * * * *</cron_expr></schedule>
<run><model>mymodule/my_model::functionName</model></run>
</cronjob_name>
</jobs>
</crontab>
将上述代码添加到您的自定义模块config.xml中,更改模块名称的mymodule,模型名称的my_model和要调用的模型函数的functionName。
在functionName
函数中,创建一个逻辑,用于启用/禁用您创建的静态块。
您可以搜索更多内容来创建/设置自定义cron作业以及启用/禁用静态块的逻辑。
答案 1 :(得分:0)
试试这段代码......
在模块
中的config.xml文件中设置cron<global>
<crontab>
<jobs>
<[cronjob_name]>
<schedule><cron_expr>0 0 * * *</cron_expr></schedule>
<run><model>[Module]/observer::changeStatus</model></run>
</[cronjob_name]>
</jobs>
</crontab>
</global>
此cron每隔午夜运行一次,每次都会更改静态块状态。要获得有关cronjob计时的更多信息,请阅读这些帖子first和second,这些信息由Magneto大师回答。 我假设你对观察者课程有所了解。观察者中的调用函数:
public function changeStatus() {
$getStaticBlock = Mage::getModel('cms/block')->getCollection()->addFieldToFilter('identifier', 'my_block_id')->load();
if($getStaticBlock->getData('is_active')){
Mage::getModel('cms/block')->setData(array('is_active' => 0))->save();
}else{
Mage::getModel('cms/block')->setData(array('is_active' => 1))->save();
}
}
希望此代码可以帮助您。一切顺利。