新手Discuz插件开发学习入门(一)
本文是一个系列教程,将记录小编学习开发插件的整个过程。
入门1. Discuz后台怎么没有设计新插件入口
解决方案:在config\config_global.php 最下面添加 $_config[‘plugindeveloper’] = 1 ,刷新后台应用即可
刷新后在后台应用,就可以看到设计新插件入口。
入门2. 怎么知道Discuz在那些位置设置了钩子,可以应用插件呢!
config\config_global.php中将$_config[‘plugindeveloper’] = 2 ,设置后上传服务器。 工具->清理缓存,然后刷新下页面
页面出现好多 类似[string index_top]的东西 这就是锚点,也是插件显示的位置。
3. 插件的基本设置(登陆管理后台,点击插件管理,设计新插件)
插件名称:中英文均可,根据插件的用途设定名称。
插件版本:就是字面意思,当前插件的版本,方便迭代管理。
版权信息:设置插件版权说明
唯一标识符(identifier):这个很重要,是插件的唯一标识,必须使用英文,可用字符数字下划线命名,后期插件代码跟这个相关。
*注意* 唯一标识符避免用大写字母,会出现路径错误的提示,如果要区分可以用“_”。
设置完以上内容,点击提交(提交后服务器source/plugin下面会生成与唯一标识符一样的文件夹)。然后跳转到插件设置页面。还可以填写插件的描述信息以及设置是否使用语言包。
小编入门写个简单的幻灯片插件,就没有包含语言包。
4. 插件模块设置
进入插件模块设置,模块类型选择“页面嵌入-普通版”,程序模块输入与标识符相同的字符串,然后点击提交。
5. 编写程序模块代码
在标识符.class.php文件中进行程序模块代码编写。
- <?php
- if(!defined(‘IN_DISCUZ’)) {
- exit(‘Access Denied’);
- }
- class plugin_lc_slide_forum {
- function index_top() {
- 代码内容
- }
- }
- ?>
复制代码
if(!defined(‘IN_DISCUZ’)) {
exit(‘Access Denied’);
}
这段代码是安全检测,标准模板套用就可以了。
代码下图标记,第一处红线标记处,为插件唯一标识符。第二处为代码生效的入口文件。比如forum.php,则是forum。第三处则是插件需要生效的锚点位置(参考入门2)。
6. 上传程序文件并启动插件测试
将编辑好的标识符.class.php文件上传到服务器source/plugin对应插件文件夹中,然后在后台开启插件后可以清理了缓存再测试。
扩展内容:
插件程序代码内容如何获取插件设置的变量内容:
比如如何获取上方的幻灯片数量设置:
global $_G;
require_once libfile(‘function/cache’);
$vars_slide = $_G[‘cache’][‘plugin’][‘lc_slide’];
//幻灯片配置
$imgnum = $vars_slide[‘imgnum_lc’];
通过$_G[‘cache’][‘plugin’][‘lc_slide’];获取指定插件的变量集合,不同的插件变更红色部分就可以了。
插件中如何引入模板:
可以在标识符.class.php程序代码中引入下方代码,同时在对应插件板块下设置template文件夹和标识符.htm的模板文件。
include template(‘标识符:标识符’);
注意:返回模板文件的输出,用return $return; 如果用echo会输出到页头。
模板文件中如何输入多行的PHP代码:
discuz模板文件中单行php代码样式<!–{eval echo $my_var;}–>,有可以写几句php代码。但是多行php代码报错时,该怎么办呢。
这时建议使用discuz 专门的多行php代码语法。点击查看 discuz php多行eval代码