## 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] 你可以在插件创建成后,自主修改info.php里面的内容来让插件功能更加丰富,让插件配置更加多样化。下面简要介绍几个常用的配置项。
### logo
为了让插件安装后在插件管理页面能够显示插件logo,我们可以在info.php中为插件指定一个logo文件地址。
~~~
'logo' => 'logo.jpg',
~~~
然后把logo.jpg文件上传到插件文件夹下面
![](https://box.kancloud.cn/2016-08-21_57b976319e633.png)
那么在插件安装成功后,插件管理页面就能看到插件的logo了
![](https://box.kancloud.cn/2016-08-21_57b97631b76ab.png)
### 默认入口
插件安装成功后,点击插件名称默认会进入*响应规则*设置页面,如果插件没有响应规则,则会默认进入插件*配置参数*页面,如果插件没有配置参数,默认会进入插件*封面入口*页面,如果插件没有封面入口,默认会进入插件*功能导航*页面。通过`index_url`参数可以指定插件默认进入的页面。
~~~
'config' => array(
'index_url' => U('/IdouGuestbook/web/messages'),
),
~~~
在info.php中按照上面的方式为插件配置默认的入口地址,则当点击插件的时候,默认会进入到`index_url`指定的地址。
![](https://box.kancloud.cn/2016-08-21_57b976321693f.png)
### 配置参数
如果设置了`'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
)
),
),
~~~
>[info] 其中,setting_list参数用于配置参数项,setting_list_group用于配置参数分组,可以为每一个参数项指定group,用户进行配置分组。
分组配置参数管理页面类似这样:
![](https://box.kancloud.cn/2016-08-21_57b9763230e0b.png)
### 封面入口
如果info.php中配置了`'entry' => 1,`,插件后台会有设置封面入口的地方。可以为插件的移动端页面配置多个入口,当微信端触发关键词后,微信会回复一条单图文消息,点击即可进入对应的移动端页面。可以按照下面的方式进行封面入口配置:
~~~
'config' => array(
'entry_list' => array(
'index' => '捐赠入口',
'donate_list' => '捐赠列表'
),
),
~~~
封面入口管理页面类似这样:
![](https://box.kancloud.cn/2016-08-21_57b9766e419cc.png)
### 业务导航
如果info.php中配置了`'menu' => 1,`,插件后台会有管理管理业务导航的地方。业务导航里面的多个导航项即为插件的各项后台管理功能,比如微商城插件的业务导航可能有店铺设置、分类管理、商品管理、订单管理等。可以这样设置业务导航:
~~~
'config' => array(
'menu_list' => array(
'lists' => '反馈列表'
)
),
~~~
则在插件后台看到的业务导航是这样子的:
![](https://box.kancloud.cn/2016-08-21_57b9766e60630.png)
### 模型配置
豆信封装了视图构建工具,可以直接在控制器中或者在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'
)
),
~~~
>[info] 注意此处的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();
}
}
?>
~~~
最终我们看到的数据展示出来就是这个样子的:
![](https://box.kancloud.cn/2016-08-21_57b9766e7d140.png)
>[info] 推荐在info.php中配置model来进行数据的增删改查,可以减少创建HTML页面的功夫,把重心放在业务逻辑的处理上面。
### 数据安装文件
开发者自己创建的插件,要发布到插件商城供其他用户使用,需要设置好数据安装文件。开发者可以把自己创建的数据表导出数据结构并统一放置在install.sql文件中,同时在info.php指定数据安装文件的地址。类似这样:
~~~
'install_sql' => 'install.sql'
~~~
>[info] 此处的`install_sql`配置项与`config`、`model`等配置项同级。
数据安装文件这样放置:
![](https://box.kancloud.cn/2016-08-21_57b9766ecb317.png)
`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'
);
?>
~~~
- 更新日志
- 入门
- 关于豆信
- 系统安装
- 功能介绍
- 公众号对接
- 小程序对接
- 系统架构
- 数据字典
- 框架目录结构
- 插件目录结构
- 运行流程
- 插件开发
- 新建插件
- info.php
- 设计数据表
- 插件控制器
- 后台管理控制器
- 移动端控制器
- 交互响应控制器
- 接口管理控制器
- 插件模型
- 插件视图
- 发布插件
- 自定义模型
- 通用增删改查
- common_lists
- common_add
- common_edit
- common_delete
- setMetaTitle
- setSubmitType
- setModel
- setListMap
- setListSearch
- setListOrder
- setListPer
- setEditMap
- setDeleteMap
- setFindMap
- addCrumb
- addNav
- addButton
- setTip
- 函数手册
- get_addon
- get_addon_settings
- tomedia
- get_fans_info
- 小程序开发专题
- 小程序对接插件.js
- 获取插件配置
- 获取用户信息
- 更新用户资料
- 公众号开发专题
- 获取粉丝信息
- 自定义分享
- 消息上下文
- 微信支付
- 企业付款
- 发送现金红包
- 发送模板消息
- 发送客服消息
- 引入前端资源
- 限制页面仅在微信浏览器访问
- 在插件页面中引入样式文件
- 在插件中创建跳转链接
- 数据预处理
- 插件开发实例
- 聊天机器人
- 留言板
- 常见问题解答