新手Discuz插件开发学习入门(一)

overme6个月前 (10-17)网页设计318
小编学习Discuz也有一段时间了,今天想要自制一个首页幻灯片,本来是想直接修改模板的,但是减少系统变更,增强兼容性。准备入手学习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文件中进行程序模块代码编写。

  1. <?php
  2. if(!defined(‘IN_DISCUZ’)) {
  3.         exit(‘Access Denied’);
  4. }
  5. class plugin_lc_slide_forum {
  6.         function index_top() {
  7.    代码内容
  8.         }
  9. }
  10. ?>

复制代码

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代码

相关文章

Discuz插件开发工具及技术文档

Discuz官方插件设计工具 链接:https://pan.baidu.com/s/13x-oTN0shkSUnxpiPw9ukg 提取码:93yc 安装方法 1、将本压缩包解压到Discu...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。