baidu
互联网 54BQ.com

新版PJBlog4插件制作的基本方法以及插件示例

  
非常期待PJBLOG4的新功能,收藏一下PJ4插件的基本制作方法


PJBlog4插件制作的基本方法 - 对配置文件的基本认识:

插件功能已经集成模板化, 不像PJBlog3那样分侧边,内容和功能三种类型.PJBlog4的插件只分前台和后台.如果需要调用插件,只需要将此插件的标识插入到模板文件中即可
1、插件标识
<PLUGIN:插件标识 />


一个插件标识对应一个插件(切记: 插件标识必须有且唯一不得重复)
下面我们来看下插件安装文件install.xml的配置:



<MARK>sys.category</MARK>  
<NAME>分类管理</NAME>  
<INFO></INFO>  
<VERSION>1.0.0.0</VERSION>  
<PJBLOGSUITVERSION>4.1.2.339 - *</PJBLOGSUITVERSION>  
<PUBDATE>2009-11-12</PUBDATE>  
<MODDATE>2009-11-13</MODDATE>  
<AUTHOR>  
<NAME>54bq</NAME>  
<URL>http://www.54bq.com</URL>  
<EMAIL>1@54bq.com</EMAIL>  
<PUBURL>http://www.54bq.com/boke/article/shmshz/166.htm</PUBURL>  
</AUTHOR>




每项具体说明:


<MARK>sys.category</MARK>

这段代码代表插件的标识,有且唯一.制作插件的时候,应当避免这个标识和其他的插件标识冲突(建议加上自己特有的前缀).用于系统识别插件.

<NAME>分类管理</NAME>

插件名称,用于用户识别插件.

<INFO></INFO>

插件信息,插件的一个简要说明.

<VERSION>1.0.0.0</VERSION>  
这段代码表示插件的版本号.插件的版本号有特殊规定(规定如下):
第一个数字代表插件的基本版本,如果没有特别大的变动,就不更新;
第二个数字代表插件的发布的次数,发布一次就加一,但是不包括发布的补丁,如果是补丁,那么就不加一;
第三个数字代表插件发布的补丁次数,发布一次就加一;
第四个数字代表插件的修改次数,最常见的就是PJBlog开发中的SVN版本号.提交一次就加一.
<PJBLOGSUITVERSION>4.1.2.339 - *</PJBLOGSUITVERSION>  
这段代码是插件使用的PJBlog版本号,它有几种情况如下:
* - *  :  表示无限制版本, 任何的PJBlog版本都适用;
4.1.2.339 - *  :  表示从PJBlog的4.1.2.339版本到后面(包括此版本)的版本都适用;
* - 4.1.2.339  :  表示在PJBlog的4.1.2.339版本前面(包括此版本)的所有版本适用;
4.1.2.339 - 4.1.2.340 : 表示在这个范围(包括两个端点)的版本号都适用.
view sourceprint?1 <PUBDATE>2009-11-12</PUBDATE>
表示插件的发布日期.
<MODDATE>2009-11-13</MODDATE>

表示插件的最后修改日期.



<MODDATE>2009-11-13</MODDATE>

表示插件的最后修改日期.



<AUTHOR>
<NAME>54bq</NAME>
<URL>http://www.54bq.com</URL>  
<EMAIL>1@54bq.com</EMAIL>  
<PUBURL>http://www.54bq.com/boke/article/shmshz/166.htm</PUBURL>  
</AUTHOR>

这里是插件作者的信息,可以自己填写.依次为插件作者、作者网址、作者邮箱和发布网址.


然后就是配置Config文件:
<CONFIG>  
<INSTALLSQL do="false">  
<INSTALL>  
<SQL></SQL>  
<SQL></SQL>  
</INSTALL>  
<UNINSTALL>  
<SQL></SQL>  
<SQL></SQL>  
</UNINSTALL>  
</INSTALLSQL>  
<INSTALLNAV do="false">  
<ITEM>  
                

<INTRO></INTRO>  
<URL></URL>  
<LOCAL></LOCAL>  
</ITEM>  
</INSTALLNAV>  
<TEMPLATE do="true">  
<BASEENTERPOLE do="false"></BASEENTERPOLE>  
<BACKENTERPOLE do="false"></BACKENTERPOLE>  
<MODE do="true">  
<ITEM>  
<MARK>ins.category</MARK>  
<INCLUDE>ins_category.asp</INCLUDE>  
</ITEM>  
</MODE>  
</TEMPLATE>  
</CONFIG>



这段代码是用来配置安装信息的, 包括了自动创建数据库, 基本设置地址,高级设置地址,插件加载信息等.

  
    <INSTALLSQL do="false">  
<INSTALL>  
<SQL></SQL>  
<SQL></SQL>  
</INSTALL>  
<UNINSTALL>  
<SQL></SQL>  
<SQL></SQL>  
</UNINSTALL>  
</INSTALLSQL>


其中的InstallSQL标签, 如果属性do为true的话将执行下面的install > sql 中的数据库创建更新语句.如果为false,则在安装过程不执行该过程.请注意插件编写规范,不要do属性设为true而后面不包含sql语句.Uninstall只在卸载插件时起作用,不过其功能只限于InstallSQL的do属性为true.


<INSTALLNAV do="false">  
<ITEM>  


INTRO></INTRO>  
<URL></URL>  
<LOCAL></LOCAL>  
</ITEM>  
</INSTALLNAV>


此段是对导航的操作.属性功能如上,如果do为true的话将直接在导航数据表中添加数据,而添加的数据必定是外部链接格式.
它的4个属性有如下对应关系:
< title> 对应 导航的名称 即分类表中字段 cate_Name
< intro>  对应 导航的简介说明 即分类表中字段 cate_Intro
< url>  对应 导航的外部链接地址 即分类表中字段 cate_URL(类似于PJBlog3中的function插件,无外部链接地址时则为空)
< local>  对应 导航的位置 即分类表中字段 cate_local (有3个数字可选:0同时,1顶部,2侧边)


<TEMPLATE do="true">  
<BASEENTERPOLE do="false"></BASEENTERPOLE>  
<BACKENTERPOLE do="false"></BACKENTERPOLE>  
<MODE do="true">  
<ITEM>  
<MARK>ins.category</MARK>  
<INCLUDE>ins_category.asp</INCLUDE>  
</ITEM>  
</MODE>  
</TEMPLATE>


此段do的属性和上面的一样
表示后台基本设置地址,与PJBlog3中的setting.xml类似
表示后台高级设置地址,与PJBlog3中的config.asp类似
后面可以包含多个item, 这些代码将被用到插件全局文件夹里
mark是这个插件模块的标识,  include是插件文件包含的代码的位置路径.这个路径是相对于插件文件夹的.PJBlog4不再区分HTML或者ASP代码,统一使用include来包含文件.这些代码通过JS加载,这样安装插件之后,不需要再重新生成页面.
我这有个范例,你们可以看一下:
<%  
' ******************** 分类管理******************************  

Dim Plugin_Category, Plugin_Category_String, Plugin_loop_i  
Plugin_Category = Cache.CategoryCache(1)  
If UBound(Plugin_Category, 1) = 0 Then
Plugin_Category_String = ""
Else
Plugin_Category_String = ""
For Plugin_loop_i = 0 To UBound(Plugin_Category, 2)  
If Int(Plugin_Category(9, Plugin_loop_i)) = 0 or Int(Plugin_Category(9, Plugin_loop_i)) = 2 Then
Plugin_Category_String = Plugin_Category_String & "<img src=""" & Plugin_Category(6, Plugin_loop_i) & """ border=""0"" style=""margin:3px 4px -4px 0px;"" alt=""" & Plugin_Category(3, Plugin_loop_i) & """/>"
If Plugin_Category(4, Plugin_loop_i) Then
Plugin_Category_String = Plugin_Category_String & "<a class=""CategoryA"" href=""" & Plugin_Category(5, Plugin_loop_i) & """ title=""" & Plugin_Category(3, Plugin_loop_i) & """>" & Plugin_Category(1, Plugin_loop_i) & "</a><br/>"
Else
Plugin_Category_String = Plugin_Category_String & "<a class=""CategoryA"" href=""cate_" & Plugin_Category(11, Plugin_loop_i) & "_1.html"" title=""" & Plugin_Category(3, Plugin_loop_i) & """>" & Plugin_Category(1, Plugin_loop_i) & "</a><br/>"
End If
End If
Next
End If
%>  
PluginTempValue = ['plugin_Category', '<%=outputSideBar(Plugin_Category_String)%>'];  
PluginOutPutString.push(PluginTempValue);


注意的是这段代码

PluginTempValue = ['plugin_Category', '<%=outputSideBar(Plugin_Category_String)%>'];  
  PluginOutPutString.push(PluginTempValue);


输出的是JS语法,将所有值压入到一个特定的PluginOutPutString数组中循环出来的.这个是关键.
而被写入的代码将在这

/* -------------------- pluginstart -------------------- */
/*---------------------------------plugin_Start_ins.category------------------------------------*/
<!--#include file="../pjblog.plugin/category/ins_category.asp" -->  
/*---------------------------------plugin_End_ins.category------------------------------------*/
/* -------------------- pluginend -------------------- */


只是包含了一个文件输出.这样可以自定义.








插件的基本配置文件是标准的XML 文件,文件名可以自定义。配置文件中的数据保存在blog_ModSetting 表中。

第一行是XML 文档的版本及编码声明,请不要修改。每个插件配置的参数都是以开头的,他的属性与HTML 中的input 标签的属性类似。主要区别是select 类型,在下面还包含字段。这些内容在插件安装后,会自动保存在blog_ModSetting 表中,后台的插件配置也是根据这个文件生成表单的。

name 提交到数据库的字段关键字名字。
value 提交到数据库的值,字符串类型。
type 类型,目前支持的类型有select, input, textarea。
description 字段描述,在插件基本设置时显示。
size 输入框的长度,无单位。
rows 用于设置textarea的高度,无单位。
cols 用于设置textarea的宽度,无单位。

下面是一个示例:系统自带的个人档案插件(AboutMeForPJBlog)的基本配置文件setting.xml。可以看到,该插件一共包含10个基本配置选项。

<?xml version="1.0" encoding="UTF-8"?>  
<PLUGINOPTIONS>  
<KEY description="站长昵称" name="MyName" size="6" type="input" value="双木杉子" />  
<KEY description="头像地址(140X220)" name="MyFace" size="40" type="input" value="Plugins/aboutMe/Myface.jpg" />  
<KEY description="年龄" name="Age" size="6" type="input" value="未知" />  
<KEY description=" 生日 " name="MyDay" size="10" type="input" value=" 未知" />  
<KEY description="性别" name="Sex" type="select" value="保密">  
<OPTION value="保密">保密</OPTION>  
<OPTION value="男">男</OPTION>  
<OPTION value="女">女</OPTION>  
</KEY>  
<KEY description=" 血型 " name="MyBrood" size="6" type="input" value="未知" />  
<KEY description=" 星座 " name="MyStar" size="6" type="input" value=" 未知" />  
<KEY description=" 地址 " name="Address" size="30" type="input" value=" 未知" />  
<KEY description="个人说明" name="MyDes" size="40" type="input" value=" 这家伙很懒什么也没留下" />  
<KEY description="兴趣爱好" name="ILike" size="40" type="input" value="" />  
</PLUGINOPTIONS>




[本日志由 shmshz 于 2010-03-03 09:52 AM 编辑]
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: pjblog PJBlog4 插件 制作 方法
相关日志:
评论: 0 | 引用: 0 | 查看次数: -
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.