`

Discuz!7.0论坛任务开发文档说明

 
阅读更多

Discuz!7.0是康盛创想(Comsenz)公司于2008年12月份发布的一款论坛BBS建站产品。Discuz!7.0论坛任务开发文档本期就为大家介绍下。

//note 任务名称 $task_name = $tasklang['gift_name']; //note 任务描述 $task_description = $tasklang['gift_desc']; //note 任务图标,图标文件需上传到论坛 images/tasks 目录,这里填写图标文件名即可。留空则使用默认图标。图标尺寸最好是 64X64 。

Discuz! 任务系统预留了安装、升级、卸载等多个接口,便于插件作者设计新的任务类型。



一、任务设计流程:

o 熟练使用 Discuz! 论坛系统后,对希望完善或补充的个性化功能进行评估,进而提出任务的功能需求。

o 对任务做一个概括性的设计,例如:完成任务的条件,需要使用什么参数,配置哪些选项、数据结构如何设计等等。

o 编写相应程序代码,实现所需的功能并进行代码测试、兼容性测试和代码改进。

o 编写任务说明书,其中包括:任务适用的 Discuz! 版本、功能概述、兼容性声明、安装方法、使用方法、卸载方法等等。

o 将任务提供给他人,或自己使用,根据使用者反馈,对任务进行完善。



二、任务脚本命名规范:

o 主程序文件 *.inc.php 置于 include/tasks/ 目录下。

o 配置文件 *.cfg.php 置于 include/tasks/ 目录下。

o 主程序文件和配置文件的文件名部分必须一致,比如:gift.inc.php 和 gift.cfg.php。



三、任务数据结构:

任务表(cdb_tasks):

taskid 任务的唯一 ID,自动递增

relatedtaskid 依存任务ID:必须完成依存任务才能申请该任务

available 是否启用

name 任务名称 不超过 50 字节

description 任务描述 支持 html

icon 任务图标 必须是 images/tasks 目录下的文件 这里只需文件名即可 留空使用默认图标

applicants 已申请任务人次

achievers 已完成任务人次

tasklimits 允许申请并完成该任务的人次上限

applyperm 允许申请任务的用户组ID(使用\t隔开,如: 1 2 3)

scriptname 任务脚本文件名(如:gift)

starttime 任务上线时间(unix时间戳)

endtime 任务下线时间(unix时间戳)

period 任务周期 单位:小时 默认为0表示一次性任务 设置为24即1天表示日常任务

reward 奖励类型, credit: 积分, magic: 道具, medal: 勋章, invite: 邀请码, group: 特殊用户组

prize 奖品: 哪一个扩展积分, 道具ID, 勋章ID,邀请码有效期, 特殊用户组ID

bonus 奖品数量/有效期: 积分数量, 道具数量, 勋章有效期, 邀请码数量,特殊用户组有效期

displayorder 显示顺序



任务变量表(cdb_taskvars):

taskvarid 任务变量的唯一 ID,自动递增

taskid 任务ID

sort 变量类别(apply:用于申请任务的条件 complete:用于完成任务的条件 setting:用于任务设置)

name 变量名称

description 变量描述

variable 变量名

type 变量类型(数字:number 字串:text 文本:textarea 开关:radio 选择:select)

value 变量值

extra 变量附加值(当变量类型为 select 时,变量值可选的取值范围)



我的任务表(cdb_mytasks):

uid 会员 UID

username 用户名

taskid 任务 ID

status 任务状态 -1失败 0进行中 1已完成

csc 任务进度(浮点数,任务进度百分比,保留小数点后两位,并且去掉百分号,如:80.33)

dateline 申请任务时间(unix时间戳)



四、任务配置文件注释:

$task_icon = 'gift.gif';
//note 任务间隔周期,单位:小时,0 或留空表示一次性任务,大于 0 表示任务可重复申请。例如设置 24 ,则表示会员完成任务 24 小时之后可重复申请该任务。
$task_period = '';
/**
* 申请/完成任务所需条件
* sort : 条件类别(apply:用于申请任务的条件 complete:用于完成任务的条件 setting:用于任务设置)
* name : 条件名称
* description : 条件说明
* variable : 条件变量名
* value :变量初始值
* type : 变量类型
* extra : 附加值
*/
$task_conditions = array(
array('sort' => '', 'name' => '', 'description' => '', 'variable' => '', 'value' => '', 'type' => '', 'extra' => ''),
);
/**
* 任务附加设置,主程序可以通过查询 taskvars 表使用这些设置
* name : 条件名称
* description : 条件说明
* variable : 条件变量名
* value :变量初始值
* type : 变量类型
* extra : 附加值
*/
$task_settings = array(
array('name' => '', 'description' => '', 'variable' => '', 'value' => '', 'type' => '', 'extra' => ''),
);
//note 任务脚本版本号
$task_version = '1.0';
//note 任务脚本版权信息 支持 html
$task_copyright = $tasklang['gift_copyright'];

五、任务配置文件说明:

$task_name 是任务类型的名称,也是基于此任务类型创建新的任务时的默认任务名称。

$task_description、$task_icon、$task_period、$task_period 这些属于任务属性的初始值。

配置文件中的变量赋值建议使用语言包变量 $tasklang 并在 templates/default/tasks.lang.php 中设置这些语言变量。



六、任务主程序文件注释:

//note 禁止非法访问
if(!defined('IN_DISCUZ')) {
exit('Access Denied');
}
/**
* 任务安装处理
*/
function task_install() {
global $db, $tablepre;
}
/**
* 任务卸载处理
*/
function task_uninstall() {
global $db, $tablepre;
}
/**
* 任务升级处理
*/
function task_upgrade() {
global $db, $tablepre;
}
/**
* 申请任务的附加条件
*/
function task_condition() {
}
/**
* 申请任务成功后的附加处理
*/
function task_preprocess() {
}
/**
* 判断任务是否完成
* @param $task - 数组变量 任务相关属性
* @返回 TRUE:成功 FALSE:失败 0:任务进行中 进度未知或尚未开始 大于0的正数:任务进行中 返回任务进度
*/
function task_csc($task = array()) {
return true;
}
/**
* 完成任务后的附加处理
*/
function task_sufprocess() {
}

七、任务主程序文件说明:

o $task 是个数组变量,其中包括 tasks 表所有字段和 mytasks 表的 csc、dateline 字段值,主程序文件可以通过参数或者声明为全局变量在各函数中使用。

o 主程序文件内置 7 个函数,task_install()、task_uninstall()、task_upgrade()分别用于处理任务的安装、卸载和升级。

o 论坛内置“用户组限制”、“必须完成指定任务”和“申请人次上限”这 3 个申请任务条件,开发者可以通过 task_condition() 函数来增加申请任务的附加条件,比如只允许没有上传过头像的会员申请:

function task_condition() {
global $discuz_uid;
include_once DISCUZ_ROOT.'./uc_client/client.php';
include language('tasks');
if(uc_check_avatar($discuz_uid)) {
showmessage($tasklang['avatar_apply_var_desc_noavatar']);
}
}

o 任务安装、卸载和升级函数中可直接写 SQL 语句,然后使用 runquery() 函数执行,runquery() 函数在 admin/tasks.inc.php 程序中,SQL 语句中的表前缀请使用 cdb_ ,如果有建表语句,请使用 MySQL4.0 句法,runquery() 函数会自动处理字符集问题。

o 有些任务需要在会员申请成功之后进行一些程序处理,我们预留了这个接口,开发者只需将处理过程置于 task_preprocess() 函数中即可,比如“加好友”这样的任务,必须在会员申请任务成功后记录一下该会员的好友数,这样才能知道会员申请任务后加了多少好友。

o 同样的道理,任务完成后也可能需要进行一些程序处理,比如上面说的“加好友”任务,会员完成任务后可以将申请任务时记录的数据删除,处理过程需要置于 task_sufprocess() 这个函数中。

o task_csc() 函数用于检测任务是否完成并返回任务进度。

分享到:
评论

相关推荐

    移动主题管理操作可选择主题分类 For discuz! 7.0.rar

    7.0 是一个流行的开源社区论坛软件,由Comsenz公司开发,用于构建和管理在线讨论区。这个“移动主题管理操作可选择主题分类”是针对该平台的一个插件,它提升了管理员在处理论坛内容时的效率。 在Discuz! 7.0的...

    论坛首页顶部快速登入插件 for discuz!7.0.rar

    7.0.rar”指的是适用于Discuz!7.0版本的一个插件,主要功能是为论坛用户提供更便捷的首页顶部登录功能。Discuz!是一款广泛使用的开源社区论坛软件,它允许站长构建自己的论坛网站,而这个插件则是一个增强用户体验的...

    Discuz!7.0CSS手册

    7.0论坛系统特有的CSS应用,比如如何结合Discuz!7.0的模板系统进行自定义设计,理解和操作CSS模板文件,以及如何调试和修复论坛样式问题。这部分内容将帮助用户将CSS理论知识转化为实际论坛界面的改进和创新。 通过...

    DISCUZ!7.0_CSS手册_扩展篇.pdf

    DISCUZ!7.0_CSS手册_扩展篇.pdf

    帖子列表显示发贴日期插件 for Discuz!7.0.rar

    【标题】"帖子列表显示发贴日期插件 for Discuz!7.0.rar"是一款针对Discuz! 7.0论坛系统的插件,其主要功能是增强论坛用户体验,通过在帖子列表中清晰地展示每个帖子的发布日期。这有助于用户更快地识别和找到最新...

    横排显示图标插件 for Discuz!7.0.rar

    【标题】"横排显示图标插件 for Discuz!7.0.rar" 是一个专为Discuz! 7.0论坛系统设计的扩展组件。Discuz!是一款非常流行的开源社区论坛软件,它允许用户建立和管理自己的在线社区。这个插件的目的是改变论坛中的...

    个人信息下显示昵称和头衔[小美化]插件 for discuz!7.0.rar

    7.0》通过增强个人信息展示,提高了论坛的互动性和用户参与度,是Discuz!7.0论坛管理者优化社区体验的一个实用工具。在安装和使用过程中,遵循说明并注意安全问题,就能充分发挥这款插件的优势。

    改进版论坛导航条插件 for Discuz!7.0.rar

    "改进版论坛导航条插件 for Discuz!7.0.rar" 这个标题指的是一款专为Discuz! 7.0版本设计的增强型论坛导航条插件。Discuz! 是一个非常流行的开源社区论坛软件,而这个插件则是针对其7.0版本进行优化和功能增强的...

    彻底去除FLASH虚线边框插件 for Discuz!7.0.rar

    7.0" 描述了这个插件的主要目的,即美化论坛界面。通过消除Flash对象周围的虚线边框,该插件使得界面看起来更加整洁和专业,这对于提升论坛的整体视觉效果和用户满意度至关重要。 【标签解析】 "程序插件-Discuz!...

    个人信息美化插件 for discuz!7.0.rar

    【标题】"个人信息美化插件 for discuz!7.0.rar"是一款专为Discuz! 7.0论坛系统设计的界面优化插件,旨在提升用户个人资料展示的美观度和用户体验。Discuz! 是一个广泛应用的开源社区论坛软件,其7.0版本在2009年...

    BaiduSitemap插件 for Discuz!7.0.rar

    【标题】:“BaiduSitemap插件 for Discuz!7.0.rar” 是一个专为Discuz! 7.0论坛系统设计的插件,它主要用于帮助网站生成百度搜索引擎友好的站点地图(Sitemap),从而提升网站在百度搜索引擎中的可见性和索引效率...

    贴内发言框美化插件 for discuz!7.0.rar

    7.0"是提升论坛用户体验的有效工具,通过精心设计的界面和实用的功能,它能够帮助Discuz!7.0论坛吸引并留住更多的用户,进一步推动社区的发展。对于论坛管理员而言,合理运用这类插件,能够使论坛在众多同类型平台中...

    组图插件 For Discuz!7.0 v2.6Beta2 GBK.rar

    7.0 v2.6Beta2 GBK.rar”是一个专为Discuz!7.0论坛系统设计的图片展示插件,其版本号为2.6Beta2,采用GBK编码。这个插件旨在增强论坛的功能,使用户能够更加方便地分享和浏览多图贴子。 【描述】:“组图插件 For ...

    FLASH游戏插件 for Discuz!7.0 GBK.rar

    标题中的“FLASH游戏插件 for Discuz!7.0 GBK.rar”表明这是一个适用于Discuz! 7.0 GBK版本的Flash游戏插件。Discuz! 是一款知名的开源社区论坛软件,而GBK是中文字符编码标准,适用于处理中文字符。这个插件允许...

    [美化] 活动插件for Discuz!7.0.rar

    标题中的 "[美化] 活动插件for Discuz!7.0.rar" 提供了两个关键信息:首先,这是一个关于“美化”的功能,...对于那些希望提升论坛活动发布体验并能接受一定技术挑战的 Discuz!7.0 用户来说,这是一个有价值的工具。

    Discuz!7.0 风格 仿phpwin7.32

    【标题】"Discuz!7.0 风格 仿phpwin7.32" 涉及的核心知识点主要围绕Discuz!论坛系统、版本7.0的特性以及风格设计,尤其是对phpwin7.32主题的模仿。 Discuz!是一款广泛应用于搭建社区论坛的开源软件,它以其强大的...

    批量评分插件 for Discuz!7.0.rar

    本插件是在Silverd的批量评分基础上进行改进,使之适用于 Discuz! 7.0 。 版权归原作者 Silverd所有。 本人所做的改进包括两点: 1. 原发送短消息在 Discuz! 7.0 下失效, 现调用论坛内置的sendpm函数进行...

    [美化] google广告不显示 for discuz!7.0.rar

    标题中的"[美化] google广告不显示 for discuz!7.0.rar"是一个针对Discuz! 7.0论坛系统的插件,主要用于解决Google广告在该平台显示问题。这个压缩包可能包含了修改或优化代码,以使得Google的广告能够在论坛页面上...

    论坛昵称代替用户名插件 for Discuz!7.0.rar

    7.0"是专为Discuz!7.0版本设计的一个增强用户体验的插件。这个插件的主要功能是让用户在论坛交互时,可以选择使用昵称而不是真实的用户名,从而保护用户的隐私,提高论坛的活跃度。 在Discuz!7.0的默认设置中,用户...

    首页板块横排显示板块介绍插件 for discuz!7.0.rar

    7.0是一款知名的社区论坛软件,其强大的功能和灵活的自定义性深受许多网站管理员的喜爱。在这个“首页板块横排显示板块介绍插件”中,我们主要探讨的是如何通过插件技术来优化Discuz!7.0论坛首页的布局,使其更加...

Global site tag (gtag.js) - Google Analytics