首页 » 建站技术 » PHP 技术 » 浏览内容

2.0.2的插件机制讲解


2006-10-06 08:03:31 6,496 0 发表评论 字体: 作者:C.K.
标签: bo-blog

体验版 88 元,个人版 128 元,多用户版 288元个人版160元升级到多用户版。

From:http://www.bo-blog.com/weblog/read.php/397.htm

无废话版本。以下的插件均指“可被插件管理器识别并管理的插件”,非模块插件。

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="border: 1px 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.’);

    网站统计 Statistics

    • 创建时间: 2005年1月3日 距今5066 天
    • 日志总数: 2461
    • 评论总数: 630
    • 标签总数: 654
    • 链接总数: 273
    • 最后更新: 2018-8-31 17:57:04
    • 您是本站第 14166739 位访客

    广告区 Guǎng Gào