info.php
info.php即插件信息文件,用于配置插件的各项功能与设置项。在新建插件页面填写了插件信息,并勾选了一些基本功能之后,会自动创建插件文件夹目录并生成一个初始化info.php,第一次生成的info.php类似于:
<?php
return array(
'name' => '留言板',
'bzname' => 'IdouGuestbook',
'desc' => '微信端留言板功能',
'type' => 'wechat',
'version' => '1.0',
'author' => '艾逗笔',
'config' => array(
'respond_rule' => 1,
'setting' => 1,
'entry' => 1,
'menu' => 1,
)
);
?>
你可以在插件创建成后,自主修改info.php里面的内容来让插件功能更加丰富,让插件配置更加多样化。下面简要介绍几个常用的配置项。
logo
为了让插件安装后在插件管理页面能够显示插件logo,我们可以在info.php中为插件指定一个logo文件地址。
'logo' => 'logo.jpg',
然后把logo.jpg文件上传到插件文件夹下面
那么在插件安装成功后,插件管理页面就能看到插件的logo了
默认入口
插件安装成功后,点击插件名称默认会进入响应规则设置页面,如果插件没有响应规则,则会默认进入插件配置参数页面,如果插件没有配置参数,默认会进入插件封面入口页面,如果插件没有封面入口,默认会进入插件功能导航页面。通过index_url
参数可以指定插件默认进入的页面。
'config' => array(
'index_url' => U('/IdouGuestbook/web/messages'),
),
在info.php中按照上面的方式为插件配置默认的入口地址,则当点击插件的时候,默认会进入到index_url
指定的地址。
配置参数
如果设置了'setting' => 1,
,那么插件就有配置参数管理页面,要显示插件的配置参数,需要配置entry_list
参数,可以按照下面的方式进行配置:
'config' => array(
'setting_list' => array(
'need_audit' => array(
'title' => '留言是否需要审核',
'type' => 'radio',
'options' => array(
0 => '不需要',
1 => '需要'
),
'value' => 0,
'group' => 'basic'
),
'per' => array(
'title' => '每页显示留言数',
'type' => 'number',
'value' => 10,
'group' => 'basic'
),
'share_title' => array(
'title' => '自定义分享标题',
'type' => 'text',
'group' => 'share'
),
'share_cover' => array(
'title' => '自定义分享封面',
'type' => 'image',
'group' => 'share'
),
'share_desc' => array(
'title' => '自定义分享描述',
'type' => 'textarea',
'group' => 'share'
)
),
'setting_list_group' => array(
'basic' => array(
'title' => '基础配置',
'is_show' => 1,
),
'share' => array(
'title' => '自定义分享配置',
'is_show' => 1
)
),
),
其中,setting_list参数用于配置参数项,setting_list_group用于配置参数分组,可以为每一个参数项指定group,用户进行配置分组。
分组配置参数管理页面类似这样:
封面入口
如果info.php中配置了'entry' => 1,
,插件后台会有设置封面入口的地方。可以为插件的移动端页面配置多个入口,当微信端触发关键词后,微信会回复一条单图文消息,点击即可进入对应的移动端页面。可以按照下面的方式进行封面入口配置:
'config' => array(
'entry_list' => array(
'index' => '捐赠入口',
'donate_list' => '捐赠列表'
),
),
封面入口管理页面类似这样:
业务导航
如果info.php中配置了'menu' => 1,
,插件后台会有管理管理业务导航的地方。业务导航里面的多个导航项即为插件的各项后台管理功能,比如微商城插件的业务导航可能有店铺设置、分类管理、商品管理、订单管理等。可以这样设置业务导航:
'config' => array(
'menu_list' => array(
'lists' => '反馈列表'
)
),
则在插件后台看到的业务导航是这样子的:
模型配置
豆信封装了视图构建工具,可以直接在控制器中或者在info.php中配置视图构建模型,就能做到不需要写任何HTML的情况下实现插件的各项后台管理功能。比如现在需要在后台业务导航的messages导航页面显示出所有用户在移动端发布的留言,就可以在info.php中配置model来进行显示:
'model' => array(
'idou_guestbook_list' => array(
'name' => 'idou_guestbook_list',
'title' => '留言表',
'lists' => array(
array(
'name' => 'id',
'title' => '主键',
'format' => 'hidden'
),
array(
'name' => 'openid',
'title' => '留言者头像',
'format' => 'function',
'extra' => array(
'function_name' => 'get_fans_headimg',
'params' => '###'
),
),
array(
'name' => 'nickname',
'title' => '留言者昵称'
),
array(
'name' => 'content',
'title' => '留言内容'
),
array(
'name' => 'create_time',
'title' => '留言时间',
'format' => 'function',
'extra' => array(
'function_name' => 'date',
'params' => 'Y-m-d H:i:s,###'
)
),
array(
'name' => 'status',
'title' => '留言状态',
'format' => 'enum',
'extra' => array(
'options' => array(
0 => '<font color="blue">未审核</font>',
1 => '<font color="green">审核通过</font>',
2 => '<font color="red">审核不通过</font>'
)
)
),
array(
'name' => 'id',
'title' => '操作',
'format' => 'custom',
'extra' => array(
'options' => array(
'edit' => array(
'title' => '编辑留言',
'url' => create_addon_url('edit', array('id'=>'{id}')),
'class' => 'btn btn-primary btn-sm icon-edit',
'attr' => ''
),
'delete' => array(
'title' => '删除留言',
'url' => create_addon_url('delete', array('id'=>'{id}')),
'class' => 'btn btn-danger btn-sm icon-delete',
'attr' => ''
)
)
)
)
),
'list_map' => array('mpid'=>get_mpid()),
'list_order' => 'create_time desc'
)
),
注意此处的model配置项和前面讲的配置项的父级配置项config是同级的。关于模型配置的各参数用法后面的章节会详细介绍。
在info.php中配置了留言数据的显示模型之后,可以在后台管理控制器中进行模型调用来显示数据。
<?php
namespace Addons\IdouGuestbook\Controller;
use Mp\Controller\AddonsController;
/**
* 留言板后台控制器
* @author 艾逗笔<765532665@qq.com>
*/
class WebController extends AddonsController {
/**
* 留言管理
* @author 艾逗笔<765532665@qq.com>
*/
public function messages() {
$model = get_addon_model('idou_guestbook_list');
$this->setModel($model)
->common_lists();
}
}
?>
最终我们看到的数据展示出来就是这个样子的:
推荐在info.php中配置model来进行数据的增删改查,可以减少创建HTML页面的功夫,把重心放在业务逻辑的处理上面。
数据安装文件
开发者自己创建的插件,要发布到插件商城供其他用户使用,需要设置好数据安装文件。开发者可以把自己创建的数据表导出数据结构并统一放置在install.sql文件中,同时在info.php指定数据安装文件的地址。类似这样:
'install_sql' => 'install.sql'
此处的
install_sql
配置项与config
、model
等配置项同级。
数据安装文件这样放置:
install.sql
里面的内容类似于:
CREATE TABLE IF NOT EXISTS `dc_idou_guestbook_list` (
`id` int(10) NOT NULL AUTO_INCREMENT COMMENT '自增ID',
`mpid` int(10) DEFAULT NULL COMMENT '公众号标识',
`openid` varchar(255) DEFAULT NULL COMMENT '用户标识',
`nickname` varchar(50) NOT NULL COMMENT '用户昵称',
`content` text NOT NULL COMMENT '留言内容',
`create_time` int(10) NOT NULL COMMENT '留言时间',
`status` tinyint(1) DEFAULT '1' COMMENT '留言状态',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='留言板留言表';
总结
掌握info.php的每一项配置项可以有效的提高插件开发的效率,下面是一个插件的info.php的完整配置项,可供开发者参考:
<?php
return array(
'name' => '留言板',
'bzname' => 'IdouGuestbook',
'desc' => '微信端留言板功能',
'type' => 'wechat',
'version' => '1.0',
'author' => '艾逗笔',
'logo' => 'logo.jpg',
'config' => array(
'index_url' => U('/addon/IdouGuestbook/web/messages'),
'setting' => 1,
'entry' => 1,
'menu' => 1,
'entry_list' => array(
'index' => '留言板首页'
),
'menu_list' => array(
'messages' => '留言管理'
),
'setting_list' => array(
'need_audit' => array(
'title' => '留言是否需要审核',
'type' => 'radio',
'options' => array(
0 => '不需要',
1 => '需要'
),
'value' => 0,
'group' => 'basic'
),
'per' => array(
'title' => '每页显示留言数',
'type' => 'number',
'value' => 10,
'group' => 'basic'
),
'share_title' => array(
'title' => '自定义分享标题',
'type' => 'text',
'group' => 'share'
),
'share_cover' => array(
'title' => '自定义分享封面',
'type' => 'image',
'group' => 'share'
),
'share_desc' => array(
'title' => '自定义分享描述',
'type' => 'textarea',
'group' => 'share'
)
),
'setting_list_group' => array(
'basic' => array(
'title' => '基础配置',
'is_show' => 1,
),
'share' => array(
'title' => '自定义分享配置',
'is_show' => 1
)
),
),
'model' => array(
'idou_guestbook_list' => array(
'name' => 'idou_guestbook_list',
'title' => '留言表',
'lists' => array(
array(
'name' => 'id',
'title' => '主键',
'format' => 'hidden'
),
array(
'name' => 'openid',
'title' => '留言者头像',
'format' => 'function',
'extra' => array(
'function_name' => 'get_fans_headimg',
'params' => '###'
),
),
array(
'name' => 'nickname',
'title' => '留言者昵称'
),
array(
'name' => 'content',
'title' => '留言内容'
),
array(
'name' => 'create_time',
'title' => '留言时间',
'format' => 'function',
'extra' => array(
'function_name' => 'date',
'params' => 'Y-m-d H:i:s,###'
)
),
array(
'name' => 'status',
'title' => '留言状态',
'format' => 'enum',
'extra' => array(
'options' => array(
0 => '<font color="blue">未审核</font>',
1 => '<font color="green">审核通过</font>',
2 => '<font color="red">审核不通过</font>'
)
)
),
array(
'name' => 'id',
'title' => '操作',
'format' => 'custom',
'extra' => array(
'options' => array(
'edit' => array(
'title' => '编辑留言',
'url' => create_addon_url('edit', array('id'=>'{id}')),
'class' => 'btn btn-primary btn-sm icon-edit',
'attr' => ''
),
'delete' => array(
'title' => '删除留言',
'url' => create_addon_url('delete', array('id'=>'{id}')),
'class' => 'btn btn-danger btn-sm icon-delete',
'attr' => ''
)
)
)
)
),
'list_map' => array('mpid'=>get_mpid()),
'list_order' => 'create_time desc'
)
),
'install_sql' => 'install.sql'
);
?>