如何在ecshop后台中添加自定义的任务计划,最模板解析说明如下:
所有的任务计划都放在/includes/modules/cron这个目录中,每一个文件的名称就是一个计划任务的code,每个任务计划对应的变量中文说明都在/languages/zh_cn/cron/这个目录中的相应文件中。
下面我们来新建一个自己的任务计划。
(1)在/includes/modules/cron目录中新建一个new_cron.php文件,文件内容格式如下:
<?php
$cron_lang = ROOT_PATH . ‘languages/’ .$GLOBALS['_CFG']['lang']. ‘/cron/new_cron.php’;
if (file_exists($cron_lang)) {
global $_LANG;
include_once($cron_lang);
}
/* 模块的基本信息 安装的时候用*/
if (isset($set_modules) && $set_modules == TRUE) {
$i = isset($modules) ? count($modules) : 0;
/* 代码 */
$modules[$i]['code'] = basename(__FILE__, ‘.php’);
/* 描述对应的语言项 */
$modules[$i]['desc'] = ‘my_cron_desc’;
/* 作者 */
$modules[$i]['author'] = ‘阿飞的博客’;
/* 网址 */
$modules[$i]['website'] = ‘http://www.afeiblog.com.cn’;
/* 版本号 */
$modules[$i]['version'] = ‘2009-11-06′;
/* 配置信息 一般这一项通过serialize函数保存在cron表的中cron_config这个字段中*/
$modules[$i]['config'] = array(
array(’name’ => ‘my_cron_name’, ‘type’ => ‘text’, ‘value’ => ‘阿飞的博客’),
array(’name’ => ‘my_cron_time’, ‘type’ => ‘text’, ‘value’ => ‘30′)
);
//name:计划任务的名称,type:类型(text,textarea,select…),value:默认值
return;
}
//下面是这个计划任务要执行的程序了
//比如可以定时执行一下清理缓存的内容
//还可以定时更新新的留言…..看你的要求了
?>
此时你再打开任务计划的时候,在列表中就可以看到你刚才添加上的内容了。这时先不要做任务操作,接着向下看。
(2)在/languages/zh_cn/cron/这个目录中新建一个new_cron.php,内容如下:
<?php
global $_LANG;
$_LANG['new_cron'] = ‘阿飞的计划任务’;
$_LANG['my_cron_desc'] = ‘阿飞的博客’;
$_LANG['my_cron_name'] = ‘阿飞的博客’;
$_LANG['my_cron_time'] = ‘自动执行时间间隔’;
?>
现在已经配置完成了我的任务计划了,接下来我们开始安装了。
(3)进入”系统设置”->”计划任务”中,点击”安装”新建的计划任务,进入到配置页,点提交就可以完成安装了。
(4)安装成功后,再对它进行相应的编辑,如果”高级选项”中的”允许执行页面”为空,表示只要用户访问网站就会执行这个定时任务计划。
(5)要想让任务正常执行还需要其它的设置,”系统设置”->”商店设置”->”基本设置”->”是否开启命令行调用计划任务”,选择”否”,此外还要在page_footer.lbi文件中加
{insert name=’query_info’},这样才能正常执行,如果不想使用{insert name=’query_info’},可以在includes/lib_insert.php中添加自己的函数,比如:
function insert_cron_info() {
/* 加入触发cron代码 */
$cron_method = empty($GLOBALS['_CFG']['cron_method']) ? ‘<img src=”api/cron.php?t=’ . gmtime() . ‘” alt=”" style=”width:0px;height:0px;” />’ : ”;
return $cron_method;
}
这样把{insert name=’query_info’}替换成{insert name=’cron_info’},多余的信息就不显示了。
提示:一般系统默认的模板是有{insert name=’query_info’}这个语句的,如果自己的模板中没有这个语句就没法正常运行了 |