博睿智
SearchRSS
2.0.2的插件机制讲解
bob 发布于 October 4, 2006 19:35
无废话版本。以下的插件均指“可被插件管理器识别并管理的插件”,非模块插件。

1. 插件存放的位置
所有插件都存放于plugin文件夹下,并单独建立自己的文件夹。比如 plugin/mynewplugin。

2. 文件构成
*setup.php  必需,插件识别信息,如名称、描述、制作者等
*install.php  非必需,插件安装时调用的文件,可用于新建数据表,创建文件,初始化数据等
*uninstall.php  非必需,插件卸载时调用的文件,可用于删除插件生成的临时文件等
*admin.php  非必需,插件后台调用文件
*<“接口”识别字符>.php  非必需,插件运行时调用的文件(解释见后)
*其它必要的文件,如图片
所有文件如有多字节文字,需以UTF-8编码保存。

3. setup.php的文件格式
以巴巴变相册插件为例。
<?php
$info
['name']="bababian"//插件识别名,必需是拉丁字母或数字,必需与插件所在文件夹同名
$info['author']="Bob";  //插件作者
$info['intro']="巴巴变相册";  //插件作用描述
$info['version']="1.0";  //插件自身的版本
$info['authorurl']="http://www.bo-blog.com";  //插件开发者网站
$info['blogversion']="2.0.1";  //插件可正常运行的最低blog程序版本
$info['register']="page";  //插件调用的“接口”识别字符的名字
?>


4. 运行方法
目前为止,提供了以下一些“接口”。(这个不是一般意义上的接口,所以打个引号)

4.1 独立前台页面(page)
*设置 $info['register'] 为page,即可注册一个独立前台页面。插件激活后,用户可通过 index.php?act=插件名 来直接进入插件提供的独立页面。

*该独立页面的内容需写入 page.php ,放置于该插件的文件夹下。该独立页面的内容由变量 $plugin_return 提供。

*示例1:新建一个独立页面,进入该页面时显示“Hello, world”字样。
A. 创建setup.php,设置 $info['register']="page";
B. 创建page.php,内容大致如下:
<?PHP
$plugin_return
='Hello, world';
?>


*如果想在页面打开时自动屏蔽侧边栏,可在page.php中加入:
$plugin_closesidebar=1;


4.2 嵌入内容(有 entrybegin,commentbegin,entrycontentend,entryend 四个)
*使用这4个“接口”可在页面中插入指定的内容,运行PHP代码。

*4个“接口”的具体位置是:
entrybegin - 日志开头的位置
commentbegin - 评论(或评论框)开始的位置
entrycontentend - 日志正文下方的位置
entryend - 整篇日志(包含管理条)结束的位置

*嵌入的内容同样由变量 $plugin_return 提供。

*示例2:在日志正文下方插入一个广告代码。
A. 创建setup.php,设置 $info['register']="entrycontentend";
B. 创建文件 entrycontentend.php 。该文件的内容大致如下:
<?php
$plugin_return
="这里是广告代码";
?>


*示例3:在日志正文下方插入一个框,框内显示访客的IP地址。
A. 创建setup.php,设置 $info['register']="entrycontentend";
B. 创建文件 entrycontentend.php 。该文件的内容大致如下:
<?php
$yourip
=$_SERVER['REMOTE_ADDR'];
$plugin_return="<div style="border1px solid #000; width: 90%;">{$yourip}</div>";
?>


4.3 替换内容(目前仅 ubbanalyse 一处)
*使用这个“接口”可以对当前正在处理中的文本进行改写等操作。

*目前仅支持在UBB解析时,对正在解析的内容进行更改。

*改写内容的操作需写入函数 plugin_插件识别名_run() 中。该函数只接受一个变量,即需要改写的内容。该函数返回值即改写后的内容。

*示例4:自定义UBB代码[marquee]。该代码的作用是使文字横向滚动。
A. 设该插件的识别名为 domarquee 。
B. 创建plugin/domarquee/setup.php,设置 $info['register']="ubbanalyse ";
C. 创建文件 plugin/domarquee/ubbanalyse.php 。该文件的内容大致如下:
<?php
function plugin_domarquee_run ($strInput) {
  
$strInput=preg_replace("/[marquee](.+?)[/marquee]/i",  "<marquee>1</marquee>"$strInput);
  return 
$strInput;
}
?>


5. 插件后台管理页面
*如果在插件安装的时候,检测到该插件文件夹下存在 admin.php ,则今后可在插件管理器中点击相应链接进入这个插件的管理页面。反之则不能。该插件管理页面的地址形式为 admin.php?act=插件名 。

*插件管理页面的内容需写入 admin.php ,放置于该插件的文件夹下。该独立页面的内容同样由变量 $plugin_return 提供。

*与独立前台页面(page)类似。参考page的示例。

6. install.php 和 uninstall.php 提供的两个特殊函数
*在这两个文件中,您可以使用函数 add_module() 和 remove_module() 来创建/移除一个模块项目。

*示例5:在安装该插件的同时,安装一个名为 example 的模块项目。
A. 创建该模块项目的安装文件 example.blog 。
B. 在install.php中写上 add_module ('minivote.blog'); ;在 uninstall.php 中写上 remove_module ('minivote.blog');

7. 安全提示
*请注意,为了避免插件文件被独立运行可能带来的问题,请在各个PHP的头部加入必要的条件判断。

*在前台,可通过判断常数 VALIDREQUEST 是否定义过来判断是否为正常调用。
在后台,可通过判断常数 VALIDADMIN 是否定义过来判断是否为正常调用。
示例代码如: if (!defined('VALIDREQUEST')) die ('Access Denied.');
 
iven
那plugin_return放在整个页面之前?定义变量也是包含在内吗?
November 25, 2006 14:46
iven
请问一下咯
要是page.php页面中有定义变量和if语句的话,plugin_return应该放在哪个位置?
November 19, 2006 09:53
不是很明白的意思。有if没有if无关的吧,只要最后输出即可。
November 22, 2006 21:15
arwei
你好,我的吧吧变插件安装显示'Access Denied
空间支持PHP5,XML-RPC
在后台安装了babbian

运行setup.php无显示
http://wainson.idc.pc77.com.cn/bo-blog/plugin/bababian/setup.php
运行install.php显示Access Denied
http://wainson.idc.pc77.com.cn/bo-blog/plugin/bababian/install.php
请问该如何解决呢?
October 18, 2006 22:17 Email
插件不是直接打开装,请在后台插件管理中心安装。
October 20, 2006 10:09
啤酒盖子
RE:Bob Thank Q.
October 16, 2006 15:10 Homepage
啤酒盖子
请教BOB个意见,插件可不可以排序?目前不能.我发现自己弄了个发送到QQ的插件.但是都是嵌入式.与那个相关日志的都在正文下面.但是.我需要我那个发送到QQ的在相关日志的上方显示.而我先装的相关日志插件.后装的发到QQ那个.这样.顺序就倒了.觉得不美观啊.效果看:http://blog.mzk.com.cn/read.php/211.htm   而我在本地测试.先装的QQ那个.然后装相关日志的.顺序就正合意了.我把网上的相关的插件.删了.再重装.顺序还是没倒过来.unhappy


回:Mesak  谢谢.知道BOB是高亮显示的了.觉得不错.效果挺好的.看着眼不累.
October 13, 2006 22:04 Homepage
好吧...会增加插件排序的
October 14, 2006 23:55
Mesak
To 啤酒盖子
Bob的code高亮是用[php] 標籤來實現的
不注意的話是不會去發現新增了標籤的
October 13, 2006 14:07
啤酒盖子
貌似很简单的东东.怎么弄完,啥也不出来?也没错误,页面也是UTF8存的.

stupid

在本地弄的.unhappy
October 12, 2006 19:29 Homepage
啤酒盖子
发现BO的CODE已经能颜色显示了。我们的啥时候能啊?是用插件还是什么?grin希望尽快能实现共享哈。嘿嘿。
October 12, 2006 16:27 Homepage
啤酒盖子
感谢~

可以自己写插件了。不过需要再学习。。。。。。。。。。grin
October 12, 2006 15:45 Homepage
Mesak
Bob,插件寫好嚕,驗收一下 cool
http://mesak.wablog.info/blog/read.php?241
October 9, 2006 01:08 Homepage
karas
什么时候能出个好的相册插件啊???
October 8, 2006 15:10
笨笨
非常感谢
October 6, 2006 10:05 Homepage
blueboy
多谢了,很需要:)
October 5, 2006 13:30 Homepage
simear2004
顶起,呵呵
October 5, 2006 12:40 Homepage
Mesak
感謝 Bob 終於出了 說明文件了 ㄒ_ㄒ
October 4, 2006 22:58 Homepage
剑书
备份,存档:)
October 4, 2006 22:45 Homepage
分页: 1/1 第一页 1 最后页
分类
  • 程序相关 [74] RSS
  • 程序扩展 [42] RSS
  • 风格模板 [16] RSS
  • 插件扩展 [24] RSS
  • 风格下载站
  • 插件下载站
  • 技术随笔 [16] RSS
  • 生活感悟 [13] RSS
  • 杂七杂八 [70] RSS
日历
统计
访问次数 4264334
今日访问 448
日志数量 212
评论数量 3387
引用数量 82
注册用户 9
在线人数 28
其他
Powered by Bo-Blog 2.5.0 build 2011.07.03