Discuz!官方免费开源建站系统

 找回密码
 立即注册
搜索

[展示] 深入理解discuz的插件开发功能(plugin)

[复制链接]
元首 发表于 2009-5-25 23:33:00 | 显示全部楼层 |阅读模式
通常大家在制作插件时, 都很少与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'
];



?>

评分

4

查看全部评分

回复

使用道具 举报

yinjie8888 发表于 2009-5-25 23:36:40 | 显示全部楼层
很详细,不错!
回复

使用道具 举报

不被谁所认识 发表于 2009-5-26 00:24:44 | 显示全部楼层
((em:06))感谢楼主的支持!特写该文件的解释,再次感谢辛勤的付出
回复

使用道具 举报

不被谁所认识 发表于 2009-5-26 00:55:06 | 显示全部楼层
跟着试了下,不行!
  1. 显示出内容.

  2. new.inc.php  代码如下

  3. <?php

  4. header('Content-Type: text/html; Charset=utf-8');

  5. @include_once DISCUZ_ROOT.'./forumdata/cache/plugin_new.php';



  6. //钩子使用.基本上成本很高, 建议用 echo $hooks['new_string'] 当变量使用.

  7. eval($hooks['new_string']);



  8. //变量使用.

  9. //print_r($_DPLUGIN); 有时间就印来瞧瞧.

  10. echo '<br>';

  11. $vars = $_DPLUGIN['new']['vars']; //$_DPLUGIN['标识']['变量组']['你设置的变量名'];



  12. echo $vars['vars'];



  13. ?>
复制代码
此段不知道是先写进那new.inc.php
,还是我们在后台那设置的过程他会自动写入?我的是GBK的版本,期待解答下,谢谢!
回复

使用道具 举报

sonpyy 发表于 2009-5-26 03:03:35 | 显示全部楼层
((em:04))
回复

使用道具 举报

牛仔很忙 发表于 2009-5-26 04:53:11 | 显示全部楼层
学习一下
回复

使用道具 举报

monkeye 发表于 2009-5-26 08:03:40 | 显示全部楼层
插件内核已升级,欢迎楼主体验新内核
回复

使用道具 举报

 楼主| 元首 发表于 2009-5-26 09:02:29 | 显示全部楼层
跟着试了下,不行!显示出内容.

new.inc.php  代码如下

此段不知道是先写进那new.inc.php
,还是我们在后台那设置的过程他会自动写入?我的是GBK的版本,期待解答下,谢谢!
不被谁所认识 发表于 2009-5-26 00:55

标识模块是否已经设置... 并且前台菜单已经显示??
回复

使用道具 举报

a624762500 发表于 2009-5-26 09:19:20 | 显示全部楼层
原来是这样
回复

使用道具 举报

冰之狼 发表于 2009-5-26 10:37:39 | 显示全部楼层
顶~!!~~~~~留个脚印
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2025-9-13 08:32 , Processed in 0.091316 second(s), 15 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表