编写测试插件

目录树备注
blobtemplate,插件中的模板目录langs,插件中的语言包目录admin.php,后台执行插件文件api.php,API接口执行的插件config.xml,插件配置文件或说明文件index.php,前台执行的插件文件install.php,插件安装文件setting.php,配置文件uninstall.php,插件卸载

所有的插件都放在plugins目录下,一个目录就是一个插件,编写插件时请注意设置文件夹名称,不要冲突。

现在开始编写一个简单的插件:测试插件,在plugins创建一个文件夹名为:demo

blob

第一步,编写 config.xml 文件

  1. <?xml version="1.0" encoding="utf-8"?><root> <title>测试插件</title> <desc>这是一个测试插件,用来测试插件是否能运行成功</desc> <author>phpok.com</author> <version>1.0</version></root>

title:插件的名称,您可以使用您自己习惯的语言来编写

desc:插件描述,介绍这个插件是做什么的

author:插件的作者

version:插件版本,默认为1.0

将文件放到plugins/demo/目录下,登录后台,点开插件可以看到:

blob

注:插件安装完成后,该config.xml文件就不被调用了,数据存到数据库中!

第二步,编写安装文件

  1. <?php//测试插件安装包if(!defined("PHPOK_SET")){exit("<h1>Access Denied</h1>");}class install_demo extends phpok_plugin{ public $me; public function __construct() { parent::plugin(); $this->me = $this->plugin_info(); $this->tpl->assign('plugin',$this->me); } public function index() { return $this->plugin_tpl('install.html'); } public function save() { $id = $this->plugin_id(); $ext = array(); $ext['demo_1'] = $this->get('demo_1'); $this->plugin_save($ext,$id); }}?>

方法 index() 表示在执行安装时输出操作

方法 save() 表示提交安装后执行的操作

对象名:install_demo

注:安装文件install.php 是非必须的,部份插件很简单,没有什么扩展,所以可以省略 install.php 文件。

接下来我们要编写install.html模板(当前这个测试插件在方法index()中用到了模板install.html)

  1. <div class="table"> <div class="title"> 测试扩展字段存储: <span class="note">这个是测试用的!</span> </div> <div class="content"> <input type="text" id="demo_1" name="demo_1" class="default" /> </div></div>

这里的模板不用包含头和尾,只要中间简单的HTML即可。数据是传输过来嵌入到安装文件,如下图

blob

输入测试关键字:这个是测试的文字。然后提交!

我们可以在数据库里看到插件已成功安装

blob

我们用数据库管理工具phpmyadmin查看数据是否存储进来,如下图:

blob

第三步,编写设置文件setting.php

在第二步中,我们编写了install.php插件,并设置了一个自定义的扩展字段!因此我们需要针对这个字段信息进行维护。(注,setting.php 文件也不是必须有的)

<?php//测试插件设置页if(!defined("PHPOK_SET")){exit("<h1>Access Denied</h1>");}class setting_demo extends phpok_plugin{    public $me;    public function __construct()    {        parent::plugin();        $this->me = $this->plugin_info();        $this->tpl->assign('plugin',$this->me);    }    public function index()    {        $this->assign('demo_1',$this->me['param']['demo_1']);        return $this->plugin_tpl('setting.html');    }    public function save()    {        $id = $this->plugin_id();        $ext = array();        $ext['demo_1'] = $this->get('demo_1');        $this->plugin_save($ext,$id);    }}?>

方法 index() 表示在执行安装时输出操作

方法 save() 表示提交安装后执行的操作

对象名:setting_demo

同样我们编写setting.html模板,代码如下:

<div class="table">    <div class="title">        测试扩展字段存储:        <span class="note">这个是测试用的!</span>    </div>    <div class="content">        <input type="text" id="demo_1" name="demo_1" class="default" value="{$demo_1}" />    </div></div>

blob

点提交,就会执行方法 save(),进行数据保存

第二步和第三步的作用主要是用来保存一些参数!接下来进行的步骤就是插件的应用了!


第四步,编写后台一个功能!打开分类管理时,自动弹出刚刚输入的扩展文本

<?php//测试插件后台的应用if(!defined("PHPOK_SET")){exit("<h1>Access Denied</h1>");}class admin_demo extends phpok_plugin{    public $me;    public function __construct()    {        parent::plugin();        $this->me = $this->plugin_info();        $this->tpl->assign('plugin',$this->me);    }    public function html_cate_index_foot()    {        echo $this->plugin_tpl('admin.html');    }}?>

现在我们编写admin.html里的代码

<script type="text/javascript">$(document).ready(function(){    alert('{$demo_1 ? $demo_1 : "测试插件,内容为空"}');});</script>

效果如下:

blob

至此一个小小的插件就完成了!