`
hudeyong926
  • 浏览: 2016359 次
  • 来自: 武汉
社区版块
存档分类
最新评论

Discuz 插件开发

    博客分类:
  • PHP
 
阅读更多

首先开启开发者模式,在config\config_global.php 最下面添加

$_config['plugindeveloper'] = 2;

刷新后台应用即可.这时在前台论坛页就出现好多类似string global_usernav_extra的东西这就是锚点,也是插件可以利用的点,描点分全局嵌入点和脚本嵌入点,脚本嵌入点写到全局嵌入点类无效

设置完成后.工具->清理缓存

 

后台 ->应用 ->设计新插件

 

 

插件模块开发

<?php
/**
 *  plugin_  普通版脚本中的类名以 plugin_ 开头。手机版脚本中的类名以 mobileplugin_ 开头。
 *  identifier 插件的唯一标识符,在插件设置中设置。
 *  CURSCRIPT 嵌入点位于的脚本名,如 forum.php 为 forum。
 */
if(!defined('IN_DISCUZ')) {
    exit('Access Denied');
}

//全局嵌入点类(必须存在)
class plugin_identifier {
}

//脚本嵌入点类
class plugin_identifier_CURSCRIPT extends plugin_identifier {
}


 

在source/plugin下新建一个文件夹,文件夹的名称要和所要创建的插件的标识符(test)相同。

 

然后在创建的文件夹下面创建您需要的文件。如下图 我在模块里面定义了  页面嵌入的 test1类文件,则需要在插件文件夹中新建一个test1.class.php的文件,下面是需要注意的东西:test1.class.php中 文件的上部分 是discuz的引入部分,而下面的类名必须要和插件的名称一致

之后在类中书写function函数。这里需要注意的是:只有function的的名称与 外面相应位置显示的名称一致的时候 才会在相应页面中的相应位置中运行。在每次新增加或者修改文件 则尽量刷新下缓存文件

到此插件已经开发完成,现在需要启用插件(如果在设计插件时已开启可以忽略)

 

在前台的相应页面刷新后 就会出现我们刚才做的简单的示例。

 

这里需要注意的是,如果需要在指定位置进行运算的话,进行页面输出的时候尽量不要使用echo 或者var_dump进行输出,因为这样会输出到最顶部,也就是网页的外围部分上。而使用return则会在指定的地方进行输出。值得注意的是,在编写插件的时候,如果确实要输出的话,先按照1步骤后,看下前台所需的页面上有没有。到此,简单的discuz的插件就开发完毕了。

点击导出按钮后导出文件XML文件放在当前插件文件夹的根目录下,直接打包插件目录为rar格式直接的发布给别人就可以正常的使用了。

 

让插件有安装和反安装能力

在导出的XML中加入

	<item id="installfile"><![CDATA[install.php]]></item>
	<item id="uninstallfile"><![CDATA[uninstall.php]]></item>
</item>

上述代码分别表示:安装|卸载插件时会运行的文件,在插件目录下添加install.php和uninstall.php

<?php
if(!defined('IN_DISCUZ')) {
	exit('Access Denied');
}

//各种安装操作
$sql = <<<EOF
DROP TABLE IF EXISTS CDB_TABLE_SETTING;
CREATE TABLE CDB_TABLE_SETTING(
  `key` varchar(20) not null primary key,
  `value` text
) ENGINE=MYISAM DEFAULT CHARSET=DCHARSET;
EOF;
runquery($sql);   //或DB::query($sql);

$finish = TRUE;
?>

 

 
 
  • 大小: 63.8 KB
  • 大小: 62.3 KB
  • 大小: 123.3 KB
  • 大小: 94.6 KB
  • 大小: 32.5 KB
  • 大小: 17.7 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics