通常大家在制作插件时, 都很少与plugin机制相关连, 几乎都在弄独立体,及扩展性比较差的.真正的discuz(以下简称DZ)的插件原理是值得学习的,流程化,目录化,后台可控制化.使得插件机制有着非常强大的扩展性. 好了,言语不易太多.实践开始:
图片1:
我们先进入后台,然后点击扩展->论坛插件.
图片2:
输入插件的唯一标识.即url上的: identifier 然后输入名称.
图片3:
选择可用,否则就没意义了.然后点击左侧的详情.
图片4:
这里没有什么好说的, 目录主要是为了多插件的区分及管理.我们默认不设置.
图片5:
我们增加一个模块,即url上的module 这里写什么模块, plugins目录中就新建立一个模块.inc.php的文件,访问时,就可以调用些文件了. 类型自己分析, 直接链接有两项,选择时,需要添入直接链接URL.
图片6:
钩子功能,作用在于执行php文件, 如果你认真eval 那这个功能就不是那么复杂了.
图片7:
设置钩子详细
图片8:
同样要启用, 否则前台又失效了.
图片9:
到了主角功能了, 变量. 设置名称, 变量名(前台使用需要) 类型 有人会说, 为什么要弄个类型出来, 当然, 如果你认为是简单的保存字符,那这位置就换成字符输入窗都行了, 事实上,在可扩展上, DZ还转了一个弯, 即插件标识组->变量->可修改(后台管理)
图片10:
简单设置一下变量的详细.
图片11:
回到论坛插件首页, 即会看到一个参数设置. 后台的结构多少有点问题, 分析了很久才明白.点击进入:
图片12:
看到了变量的设置在这块起作用了吧?? 这样就形成了一个简单的插件后台管理.
图片13
前台显示菜单.
图片14:
显示出内容.
new.inc.php 代码如下
<?php
header('Content-Type: text/html; Charset=utf-8');
@include_once DISCUZ_ROOT.'./forumdata/cache/plugin_new.php';
//钩子使用.基本上成本很高, 建议用 echo $hooks['new_string'] 当变量使用.
eval($hooks['new_string']);
//变量使用.
//print_r($_DPLUGIN); 有时间就印来瞧瞧.
echo '<br>';
$vars = $_DPLUGIN['new']['vars']; //$_DPLUGIN['标识']['变量组']['你设置的变量名'];
echo $vars['vars'];
?> |