如何设置静态块的cron作业在Magento中从日期到日期运行

时间:2014-05-13 18:05:53

标签: magento static block

我到处搜索,发现它可以通过cron job enable / disable来完成,但我还没有找到如何,或者是否有另一种方法可以显示如何从一个日期显示一个静态块,并且自动从另一个日期起飞?谢谢!

2 个答案:

答案 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作业以及启用/禁用静态块的逻辑。

有关详情,请查看hereherehere

答案 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计时的更多信息,请阅读这些帖子firstsecond,这些信息由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();
    }

}

希望此代码可以帮助您。一切顺利。