您现在的位置是:首页 > cms教程 > Discuz教程Discuz教程
Discuz!道具系统开发介绍
问筠2025-07-06Discuz教程已有人查阅
导读Discuz!道具系统采用独立的php文件的道具结构,每个道具拥有一个单独的php文件,做为这个道具运行文件,用户可以自行编写道具文件制作属于自己论坛的道具。
Discuz!道具系统采用独立的php文件的道具结构,每个道具拥有一个单独的php文件,做为这个道具运行文件,用户可以自行编写道具文件制作属于自己论坛的道具。下面具体介绍一下相关机制和开发方法
1、 道具的组成
每个道具由两部分组成,php文件和图片文件。
php文件存放在论坛include/magic目录下,命名规范为magic_inc_道具名称.php文件。图片文件存放在images/magics目录下,命名规范为道具唯一标识(小写).gif
注:其中道具名称由任意英文字母组成,道具唯一标识是在添加的时候确定的,此标识唯一,最长为3个大写英文字母道具图片不用多说就是gif文件,下面我具体说说php文件编写规范
2、 道具php文件编写详解
我们以一个道具php文件(magic_inc_close.php)为例
3、 道具系统自带函数
所有的自定函数都在include/magic.func.php文件里面,下面我对这些函数一一做解释
1、 道具的组成
每个道具由两部分组成,php文件和图片文件。
php文件存放在论坛include/magic目录下,命名规范为magic_inc_道具名称.php文件。图片文件存放在images/magics目录下,命名规范为道具唯一标识(小写).gif
注:其中道具名称由任意英文字母组成,道具唯一标识是在添加的时候确定的,此标识唯一,最长为3个大写英文字母道具图片不用多说就是gif文件,下面我具体说说php文件编写规范
2、 道具php文件编写详解
我们以一个道具php文件(magic_inc_close.php)为例
<?php
// 这段代码的作用防止文件直接调用,每个道具文件都必须在开头加入
if(!defined('IN_DISCUZ')) {
exit('Access Denied');
}
// 用户点击使用后,执行的代码
if(submitcheck('usesubmit')) {
// 验证资料是否填写完全,这里验证$tid(帖子id)是否填写
if(empty($tid)) {
showmessage('magics_info_nonexistence');
}
// 取得帖子的相关资料
$thread = getpostinfo($tid, 'tid', array('fid'));
// 验证帖子所在的版块是否有使用道具的权限
checkmagicperm($magicperm['forum'], $thread['fid']);
// 道具的执行代码
$db->query("UPDATE {$tablepre}threads SET closed='1', moderated='1' WHERE tid='$tid'");
$expiration = $timestamp + 86400;
// 使用道具代码
usemagic($magicid, $magic['num']);
// 记录道具使用日志
updatemagiclog($magicid, '2', '1', '0', $tid);
// 记录道具使用对象(这里指主题)日志
updatemagicthreadlog($tid, $magicid, $magic['identifier'], $expiration);
// 显示道具使用信息
showmessage('magics_operation_succeed', 'magic.php?action=user');
}
// 生成道具界面显示代码
function showmagic() {
global $tid, $lang;
magicshowtype($lang['option'], 'top');
magicshowsetting($lang['target_tid'], 'tid', $tid, 'text');
magicshowtype('', 'bottom');
}
?>
以上就是一个简单道具的编写格式,其中红色注释部分是一个道具必须有的,当然里面的一些代码可以根据道具类型的不同做一些改动,比如取得帖子资料的语句,如果是对用户的操作,可以改为取用户资料。相关这些操作我们已经内置了一些自定义函数,通过这些自定义函数你就可以轻松调用你想调用的资料了,下面我们就来说说这些自定义函数。3、 道具系统自带函数
所有的自定函数都在include/magic.func.php文件里面,下面我对这些函数一一做解释
本文标签:
很赞哦! ()
上一篇:Discuz开源代码结构小分析
相关教程
图文教程
异步调用Discuz!NT接口的实现方法
最近在做Discuz!NT论坛与网站整合的东西,于是便用到了Discuz提供的Discuz! Toolkit看了看源码,应该说这是个不错的工具库,提供了关于注册
discuz登录流程分析
discuz登录流程解析,最近在研究,Ucenter的同步登陆机制,就先从discuz的登录开始了处理脚本source/module/member/member_logging.php
Ecshop和Discuz开源产品有哪些局限性
记得今年年初,我初次接触Discuz!和Ecshop时,一阵阵地惊叹:成熟度这么高的产品,居然是免费的。我们这些搞传统软件开发的要怎么活?
Discuz开源代码结构小分析
右图是DiscuzNt(以下简称DZ)开源代码的方案结构20个项目,看上去好像很庞大,现在我们来分析一下它的层次,从本人的个人分析角度上看discus是比较典型的应用三层架构
相关源码
-
(自适应响应式)蓝色勘察设计院机构单位商会协会pbootcms模板下载本模板基于PbootCMS系统开发,为勘察设计院所、工程咨询单位设计,特别适合展示设计成果、技术服务和项目案例。采用响应式技术,确保设计图纸和方案以及文案在不同设备上都能清晰展示。查看源码 -
(PC+WAP)院校学院职业学校机构协会网站开源源码下载本模板基于PbootCMS系统开发,为高等院校、职业学校等教育机构设计,特别适合展示学校概况、院系设置、招生信息等内容。采用双端适配技术,确保在PC和移动设备上都能获得良好的浏览体验。查看源码 -
(PC+WAP)化工材料企业环保能源绿色营销型pbootcms模板源码下载本模板为化工材料及环保能源企业设计,采用PbootCMS开发,可展示各类化工产品、环保技术及能源解决方案。查看源码 -
(自适应)html5宽屏电线电缆材料加工制造类企业网站源码下载本模板基于PbootCMS系统开发,特别适合电线电缆、电缆材料及相关加工制造类企业使用。采用HTML5宽屏设计,能够展示各类电缆产品的技术参数和规格详情,帮助客户全面了解产品特性。查看源码 -
自适应黑色建筑装饰设计公司个人工作室pbootcms模板基于PbootCMS内核开发的黑金风格模板,为建筑装饰、工程设计类企业打造,采用开源架构,支持跨行业快速适配,核心优势如下: 查看源码 -
(自适应)蓝色环保科技设备带三级栏目网站模板下载该模板为环保科技企业设计,提供专业的产品展示与技术服务平台。采用响应式布局,适配环保设备、清洁技术等应用场景,通过可视化后台可快速搭建符合行业特性的展示网站。查看源码
| 分享笔记 (共有 篇笔记) |
