编写测试插件

目录树备注
blob

template,插件中的模板目录

langs,插件中的语言包目录

admin.php,后台执行插件文件

api.php,API接口执行的插件

config.xml,插件配置文件或说明文件

index.php,前台执行的插件文件

install.php,插件安装文件

setting.php,配置文件

uninstall.php,插件卸载

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

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

blob

第一步,编写 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/目录下,登录后台,点开插件可以看到:

blob

注:插件安装完成后,该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即可。数据是传输过来嵌入到安装文件,如下图

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

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

没有找到答案?

您可以通过留言获取更多帮助。也可以通过社区提交相关问题。

留言 开发者社区
论坛咨询