编写测试插件
目录树 | 备注 |
---|---|
template,插件中的模板目录langs,插件中的语言包目录admin.php,后台执行插件文件api.php,API接口执行的插件config.xml,插件配置文件或说明文件index.php,前台执行的插件文件install.php,插件安装文件setting.php,配置文件uninstall.php,插件卸载 |
所有的插件都放在plugins目录下,一个目录就是一个插件,编写插件时请注意设置文件夹名称,不要冲突。
现在开始编写一个简单的插件:测试插件,在plugins创建一个文件夹名为:demo
第一步,编写 config.xml 文件
- <?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/目录下,登录后台,点开插件可以看到:
注:插件安装完成后,该config.xml文件就不被调用了,数据存到数据库中!
第二步,编写安装文件
- <?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)
- <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即可。数据是传输过来嵌入到安装文件,如下图
输入测试关键字:这个是测试的文字。然后提交!
我们可以在数据库里看到插件已成功安装
我们用数据库管理工具phpmyadmin查看数据是否存储进来,如下图:
第三步,编写设置文件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>点提交,就会执行方法 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>效果如下:
至此一个小小的插件就完成了!