iWeb MALL 插件规范 (
(
(
( beta 版 )
)
)
)
插件简介
插件就是为了满足个性化需求按照 iWeb
iWeb
iWeb
iWeb MALL
MALL
MALL
MALL 插件开发规范编写的可插拔程序, 虽然可以直接对 iWeb
iWeb
iWeb
iWeb MAL
MAL
MAL
MAL L
L
L
L
进行二次开发实现插件同样的功能,但是这样做势必影响到系统的升级和稳定性。采用插件的方式,可以随时
进行停用和卸载,而且对系统毫无影响。
插件的类型
插件显示 位置和分布如下 。
插件规范 及注意: 我们这里以插件的标识符 myplugin (建议唯一)为例说明。
1 、 myplugin 应该放在 plugins 目录下面;
2 、 myplugin 必需包含 plugin.xml 文件,此文件用来配制插件的基本信息,可以通过工具自动生成;
3 、如果插件有复杂的交互功能,还需在 myplugin 目录下创建 actions.xml 文件,并且编写相应的脚本文件。
插件开发步骤 :
:
:
:
1 、明确自己需要的功能,先认真看清楚 iWeb
iWeb
iWeb
iWeb MALL
MALL
MALL
MALL 是否已经包含;
2 、插件命名(中英文皆可) 。插件的标识符(必需为英文)建议唯一,这点非常重要,建议在开发插件的时候
一定要遵守下面的规范;
3 、明确插件要显示的位置(参见上面的图示) ,以确定插件的类型。
插件的分类有:
1 ) 、以嵌入的方式来显示,交互主要是通过 Ajax 来实现。此类插件为系统的 Widget 插件;
2 ) 、通过页面的主显区域显示,实现较为复杂的交互功能。此类插件为系统的 APP 应用;
3) 、在两者之间,部分嵌入页面,部分显示在主显区域,即系统的 APP+Widget 插件。
4 、如果开发需要有 API 的支持,请参阅 API 文档。
5 、编写开发完成后,生成自己的 P lugin.xml 插件的安装信息文件。此文件的创建由 createplugin.php 文件生成
,
该文件可从官方下载,或者运行系统 plugins 目录下的 createplugin.php 文件生成,如果插件涉及到交互脚本,
还需要创建自己的 Actions.xml 文件,下面会有详细的介绍 Actions.xml 的编写规范。
6 、开发的插件如果涉及到数据表的操作,则应该先创建好自己的数据表,然后用 phpmyadmin 、 SQLyog 导出
,
如果自己编写一定要遵守 SQL 文件的编写规范 , 并把些文件配制到 plugin.xml 中。
7 、调试通过后,插件即可发布。
关于 actions.xml
actions.xml
actions.xml
actions.xml 文件编写:
格式如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE actions SYSTEM "../Actions.dtd"> // 此行一定要引入,否则程序不能正常运行
<actions>
<package name="test">
<action name="show" file="action/PersonAction.php" class="Person" method="show">
<return name="input">error.php</return>
<return name="success">view/helloword_list.php</return>
</action>
<action name="add" file="action/PersonAction.php" method="add">
<return name="input">error.php</return>
<return name="success">view/helloword_list.php</return>
</action>
<action name="del" file="action/PersonAction.php" method="del">
<return name="input">error.php</return>
<return name="success">view/helloword_list.php</return>
</action>
</package>
</actions>
关于此文件的详细说明如下:
根结点 (actions)
(actions)
(actions)
(actions) : 指 XML 配制文件的根结点。
包结点 (package)
(package)
(package)
(package) : 指包含一类功能的包名,方便开发者把同一类功能的 action 放在一起,利于管理,此节点 只
包含一个 name 必选属性,指包的名字。
动作结点 (action)
(action)
(action)
(action) : 指每一个功能处理节点,此节点包含 name 、 file 、 class 、 method 等属性, name 是必选属性
,
功能名是方便开发者调用的; file 是必选属性,指用来处理此功能的文件; class 是可选属性,是开发者的类名
,
如果开发者没用到类,那么此属性不用填写。 M ethod 是必选属性,处理此动作的功能函数。
返回节点 (return)
(return)
(return)
(return)
:
指动作处理完成后要跳转地址, name 是必选属性是指 method 方法中处理完后的返回的字 符
串;内容是指此字符串对应的跳转地址,地址的路径是指开发者插件的根目录开发的。
如果开发的插件是包含对于数据库的操作,那么分为两类。一类是有自己的数据库服务器,那么开发者不必提
供对应的 SQL 安装文件,也不用编写 actions.xml 文件;另一类是没有自己的数据库服务器,要用此系统的数
据库,就要编写自己的 SQL 安装文件( 建议此文件是用 PHPMyAdmin 和 SQLyou 工具或者由 MySql 直接导出
的文件 ) ,系统识别的注释标记有 “ /**/
” “
--
” “
# ” ,每句都要以 “ ; ” 为结束符号,并且要在生成 plugin.xml
文件时填写上此 SQL 安装文件,为了防止冲突,开发者创建的表必需添加表前缀,并且在插件的根目录下建 立
一个 config.php 文件,文件中包含 $table_prefix=' 表前缀名
';
开发者的程序中要引用此变量,是保证能系统发生 冲
突时自动解决的前提。
关于用户文件有编写:
在系统目录下,有一个 plugins 文件夹,这是存放用户所有插件的地方,此目录下 includes.php 文件,是用户 开
发插件的基础,也是用户调用 A p i 的必需文件。
在引入此文件之前要引入以下变量,
$getpost_power=true; 开启统一读入 $_GET 和 $_POST 的方法,如果开发者不使用此功能不用引入此行代码。
$iweb_power=true; 开启对系统平台数据库的支持,如果只是调用 API 则不用开启此功能。
$session_power=true; 如果开发者要使用, session 那么需要开启此功能。
如果只引用些文件,前面不引入变量,那么系统自动会开启 API 的支持。
如果开发者开发的功能用不到以上功能,则此文件不必引入。
一些补充说明:
1 、 widget 插件的编写。此类型的插件一般为一些小型的程序,如一些广告、 FLSAH 、日历、天气预报、 IP 查
询等等的小型插件,编写开发都比较自由,显示的方式是网页嵌入式的方式,如果有内容的更新和切换,
是由系统提供的 Ajax 类来实现的,用户直接调用即可,此插件可以安装到系统的首页,个人首页及个人 主
页的页面上。
2 、 Application(App) 应用的开发,一般都涉及到交互式的操作,如:开心农场、关注好友日志、关注度排行榜
等等。此应用插件是可以由用户自由定制的,此插件有显示位置如下图 :
APP 应用开发的要求,如果此插件要在系统内建立表,那么开发者要提供自己的 MySql 安装文件,并且 配
制到自己的 plugin.xml 文件中,建议用户在自己的插件根目录下建立 config.php 文件,并写入变量
$table_prefix=' 表前缀名 ' ; 此举主要是防止开发的插件出现同名冲突, 以实现产生冲突时系统能自动分配唯 一
标识符,保证插件的正常运行。其它的文件完全由用户自由的开发。在 App
应用显示的位置(如图所示) ,
如果有内容提交及跳转请求应使用系统提供的 do_action (__file__) 函数,使用此函数必需引用 includes.php
文件。
3 、 Widget+APP 式的插件,只能显示在个人主页及个人首页上,以嵌入式和交互式的方式显示,如:音乐盒 等
程序。需要配制的文件和注意的事项同上。
开发样例 :
:
:
:
下面我们以一个实例来讲述如何开发一个插件。
插件名为:日志排行榜 英文唯一标识: blogranking
建立一个名为 blogranking (即唯一标识名)文件夹。
开始编写文件,文件名为 index.php, 代码如下:
<?php
include(dirname(__file__)."/../includes.php"); // 引入调用 API 的必要条件
?>
<link href="<?php echo self_url(__file__) ?>test.css" rel="stylesheet" type="text/css" />
// 调用系统方法得到当前路径
<div id=" blogranking "> // 用户开发插件自定义 ID ,也是用户定义的工作区
<div id="bar" style="background:url(<?php echo self_url(__file__)?>image/top.gif); height:29px; align='center'"><a
href="<?php echo self_url(__file__)?>index.php?type=0" name="ajax" target="'blogranking'" > 日 </a>
//
<a href="<?php echo self_url(__file__)?>index.php?type=1" name="ajax" target="'blogranking'" > 周 </a> <a
href="<?php echo self_url(__file__)?>index.php?type=2" name="ajax" target="'blogranking'" > 月 </a></div>
<table width="100%" height="20" border="0" align="center" cellspacing="0" >
<tr style=" background-color:#c7ebf9 ;height:20px">
<td bgcolor=""> 日志标题 </td>
<td bgcolor=""> 发表者 </td>
<td bgcolor=""> 点击数 </td>
</tr>
<?php
function change($type) / 根据自己的需要编写自己的函数
{
date_default_timez one_set("Asia/ShangHai");
$date=date('Y-m-d');