🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## 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' ); ?> ~~~