info.php

info.php即插件信息文件,用于配置插件的各项功能与设置项。在新建插件页面填写了插件信息,并勾选了一些基本功能之后,会自动创建插件文件夹目录并生成一个初始化info.php,第一次生成的info.php类似于:

  1. <?php
  2. return array(
  3. 'name' => '留言板',
  4. 'bzname' => 'IdouGuestbook',
  5. 'desc' => '微信端留言板功能',
  6. 'type' => 'wechat',
  7. 'version' => '1.0',
  8. 'author' => '艾逗笔',
  9. 'config' => array(
  10. 'respond_rule' => 1,
  11. 'setting' => 1,
  12. 'entry' => 1,
  13. 'menu' => 1,
  14. )
  15. );
  16. ?>

你可以在插件创建成后,自主修改info.php里面的内容来让插件功能更加丰富,让插件配置更加多样化。下面简要介绍几个常用的配置项。

为了让插件安装后在插件管理页面能够显示插件logo,我们可以在info.php中为插件指定一个logo文件地址。

  1. 'logo' => 'logo.jpg',

然后把logo.jpg文件上传到插件文件夹下面info.php - 图1

那么在插件安装成功后,插件管理页面就能看到插件的logo了info.php - 图2

默认入口

插件安装成功后,点击插件名称默认会进入响应规则设置页面,如果插件没有响应规则,则会默认进入插件配置参数页面,如果插件没有配置参数,默认会进入插件封面入口页面,如果插件没有封面入口,默认会进入插件功能导航页面。通过index_url参数可以指定插件默认进入的页面。

  1. 'config' => array(
  2. 'index_url' => U('/IdouGuestbook/web/messages'),
  3. ),

在info.php中按照上面的方式为插件配置默认的入口地址,则当点击插件的时候,默认会进入到index_url指定的地址。info.php - 图3

配置参数

如果设置了'setting' => 1,,那么插件就有配置参数管理页面,要显示插件的配置参数,需要配置entry_list参数,可以按照下面的方式进行配置:

  1. 'config' => array(
  2. 'setting_list' => array(
  3. 'need_audit' => array(
  4. 'title' => '留言是否需要审核',
  5. 'type' => 'radio',
  6. 'options' => array(
  7. 0 => '不需要',
  8. 1 => '需要'
  9. ),
  10. 'value' => 0,
  11. 'group' => 'basic'
  12. ),
  13. 'per' => array(
  14. 'title' => '每页显示留言数',
  15. 'type' => 'number',
  16. 'value' => 10,
  17. 'group' => 'basic'
  18. ),
  19. 'share_title' => array(
  20. 'title' => '自定义分享标题',
  21. 'type' => 'text',
  22. 'group' => 'share'
  23. ),
  24. 'share_cover' => array(
  25. 'title' => '自定义分享封面',
  26. 'type' => 'image',
  27. 'group' => 'share'
  28. ),
  29. 'share_desc' => array(
  30. 'title' => '自定义分享描述',
  31. 'type' => 'textarea',
  32. 'group' => 'share'
  33. )
  34. ),
  35. 'setting_list_group' => array(
  36. 'basic' => array(
  37. 'title' => '基础配置',
  38. 'is_show' => 1,
  39. ),
  40. 'share' => array(
  41. 'title' => '自定义分享配置',
  42. 'is_show' => 1
  43. )
  44. ),
  45. ),

其中,setting_list参数用于配置参数项,setting_list_group用于配置参数分组,可以为每一个参数项指定group,用户进行配置分组。

分组配置参数管理页面类似这样:

info.php - 图4

封面入口

如果info.php中配置了'entry' => 1,,插件后台会有设置封面入口的地方。可以为插件的移动端页面配置多个入口,当微信端触发关键词后,微信会回复一条单图文消息,点击即可进入对应的移动端页面。可以按照下面的方式进行封面入口配置:

  1. 'config' => array(
  2. 'entry_list' => array(
  3. 'index' => '捐赠入口',
  4. 'donate_list' => '捐赠列表'
  5. ),
  6. ),

封面入口管理页面类似这样:

info.php - 图5

业务导航

如果info.php中配置了'menu' => 1,,插件后台会有管理管理业务导航的地方。业务导航里面的多个导航项即为插件的各项后台管理功能,比如微商城插件的业务导航可能有店铺设置、分类管理、商品管理、订单管理等。可以这样设置业务导航:

  1. 'config' => array(
  2. 'menu_list' => array(
  3. 'lists' => '反馈列表'
  4. )
  5. ),

则在插件后台看到的业务导航是这样子的:

info.php - 图6

模型配置

豆信封装了视图构建工具,可以直接在控制器中或者在info.php中配置视图构建模型,就能做到不需要写任何HTML的情况下实现插件的各项后台管理功能。比如现在需要在后台业务导航的messages导航页面显示出所有用户在移动端发布的留言,就可以在info.php中配置model来进行显示:

  1. 'model' => array(
  2. 'idou_guestbook_list' => array(
  3. 'name' => 'idou_guestbook_list',
  4. 'title' => '留言表',
  5. 'lists' => array(
  6. array(
  7. 'name' => 'id',
  8. 'title' => '主键',
  9. 'format' => 'hidden'
  10. ),
  11. array(
  12. 'name' => 'openid',
  13. 'title' => '留言者头像',
  14. 'format' => 'function',
  15. 'extra' => array(
  16. 'function_name' => 'get_fans_headimg',
  17. 'params' => '###'
  18. ),
  19. ),
  20. array(
  21. 'name' => 'nickname',
  22. 'title' => '留言者昵称'
  23. ),
  24. array(
  25. 'name' => 'content',
  26. 'title' => '留言内容'
  27. ),
  28. array(
  29. 'name' => 'create_time',
  30. 'title' => '留言时间',
  31. 'format' => 'function',
  32. 'extra' => array(
  33. 'function_name' => 'date',
  34. 'params' => 'Y-m-d H:i:s,###'
  35. )
  36. ),
  37. array(
  38. 'name' => 'status',
  39. 'title' => '留言状态',
  40. 'format' => 'enum',
  41. 'extra' => array(
  42. 'options' => array(
  43. 0 => '<font color="blue">未审核</font>',
  44. 1 => '<font color="green">审核通过</font>',
  45. 2 => '<font color="red">审核不通过</font>'
  46. )
  47. )
  48. ),
  49. array(
  50. 'name' => 'id',
  51. 'title' => '操作',
  52. 'format' => 'custom',
  53. 'extra' => array(
  54. 'options' => array(
  55. 'edit' => array(
  56. 'title' => '编辑留言',
  57. 'url' => create_addon_url('edit', array('id'=>'{id}')),
  58. 'class' => 'btn btn-primary btn-sm icon-edit',
  59. 'attr' => ''
  60. ),
  61. 'delete' => array(
  62. 'title' => '删除留言',
  63. 'url' => create_addon_url('delete', array('id'=>'{id}')),
  64. 'class' => 'btn btn-danger btn-sm icon-delete',
  65. 'attr' => ''
  66. )
  67. )
  68. )
  69. )
  70. ),
  71. 'list_map' => array('mpid'=>get_mpid()),
  72. 'list_order' => 'create_time desc'
  73. )
  74. ),

注意此处的model配置项和前面讲的配置项的父级配置项config是同级的。关于模型配置的各参数用法后面的章节会详细介绍。

在info.php中配置了留言数据的显示模型之后,可以在后台管理控制器中进行模型调用来显示数据。

  1. <?php
  2. namespace Addons\IdouGuestbook\Controller;
  3. use Mp\Controller\AddonsController;
  4. /**
  5. * 留言板后台控制器
  6. * @author 艾逗笔<765532665@qq.com>
  7. */
  8. class WebController extends AddonsController {
  9. /**
  10. * 留言管理
  11. * @author 艾逗笔<765532665@qq.com>
  12. */
  13. public function messages() {
  14. $model = get_addon_model('idou_guestbook_list');
  15. $this->setModel($model)
  16. ->common_lists();
  17. }
  18. }
  19. ?>

最终我们看到的数据展示出来就是这个样子的:

info.php - 图7

推荐在info.php中配置model来进行数据的增删改查,可以减少创建HTML页面的功夫,把重心放在业务逻辑的处理上面。

数据安装文件

开发者自己创建的插件,要发布到插件商城供其他用户使用,需要设置好数据安装文件。开发者可以把自己创建的数据表导出数据结构并统一放置在install.sql文件中,同时在info.php指定数据安装文件的地址。类似这样:

  1. 'install_sql' => 'install.sql'

此处的install_sql配置项与configmodel等配置项同级。

数据安装文件这样放置:info.php - 图8

install.sql里面的内容类似于:

  1. CREATE TABLE IF NOT EXISTS `dc_idou_guestbook_list` (
  2. `id` int(10) NOT NULL AUTO_INCREMENT COMMENT '自增ID',
  3. `mpid` int(10) DEFAULT NULL COMMENT '公众号标识',
  4. `openid` varchar(255) DEFAULT NULL COMMENT '用户标识',
  5. `nickname` varchar(50) NOT NULL COMMENT '用户昵称',
  6. `content` text NOT NULL COMMENT '留言内容',
  7. `create_time` int(10) NOT NULL COMMENT '留言时间',
  8. `status` tinyint(1) DEFAULT '1' COMMENT '留言状态',
  9. PRIMARY KEY (`id`)
  10. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='留言板留言表';

总结

掌握info.php的每一项配置项可以有效的提高插件开发的效率,下面是一个插件的info.php的完整配置项,可供开发者参考:

  1. <?php
  2. return array(
  3. 'name' => '留言板',
  4. 'bzname' => 'IdouGuestbook',
  5. 'desc' => '微信端留言板功能',
  6. 'type' => 'wechat',
  7. 'version' => '1.0',
  8. 'author' => '艾逗笔',
  9. 'logo' => 'logo.jpg',
  10. 'config' => array(
  11. 'index_url' => U('/addon/IdouGuestbook/web/messages'),
  12. 'setting' => 1,
  13. 'entry' => 1,
  14. 'menu' => 1,
  15. 'entry_list' => array(
  16. 'index' => '留言板首页'
  17. ),
  18. 'menu_list' => array(
  19. 'messages' => '留言管理'
  20. ),
  21. 'setting_list' => array(
  22. 'need_audit' => array(
  23. 'title' => '留言是否需要审核',
  24. 'type' => 'radio',
  25. 'options' => array(
  26. 0 => '不需要',
  27. 1 => '需要'
  28. ),
  29. 'value' => 0,
  30. 'group' => 'basic'
  31. ),
  32. 'per' => array(
  33. 'title' => '每页显示留言数',
  34. 'type' => 'number',
  35. 'value' => 10,
  36. 'group' => 'basic'
  37. ),
  38. 'share_title' => array(
  39. 'title' => '自定义分享标题',
  40. 'type' => 'text',
  41. 'group' => 'share'
  42. ),
  43. 'share_cover' => array(
  44. 'title' => '自定义分享封面',
  45. 'type' => 'image',
  46. 'group' => 'share'
  47. ),
  48. 'share_desc' => array(
  49. 'title' => '自定义分享描述',
  50. 'type' => 'textarea',
  51. 'group' => 'share'
  52. )
  53. ),
  54. 'setting_list_group' => array(
  55. 'basic' => array(
  56. 'title' => '基础配置',
  57. 'is_show' => 1,
  58. ),
  59. 'share' => array(
  60. 'title' => '自定义分享配置',
  61. 'is_show' => 1
  62. )
  63. ),
  64. ),
  65. 'model' => array(
  66. 'idou_guestbook_list' => array(
  67. 'name' => 'idou_guestbook_list',
  68. 'title' => '留言表',
  69. 'lists' => array(
  70. array(
  71. 'name' => 'id',
  72. 'title' => '主键',
  73. 'format' => 'hidden'
  74. ),
  75. array(
  76. 'name' => 'openid',
  77. 'title' => '留言者头像',
  78. 'format' => 'function',
  79. 'extra' => array(
  80. 'function_name' => 'get_fans_headimg',
  81. 'params' => '###'
  82. ),
  83. ),
  84. array(
  85. 'name' => 'nickname',
  86. 'title' => '留言者昵称'
  87. ),
  88. array(
  89. 'name' => 'content',
  90. 'title' => '留言内容'
  91. ),
  92. array(
  93. 'name' => 'create_time',
  94. 'title' => '留言时间',
  95. 'format' => 'function',
  96. 'extra' => array(
  97. 'function_name' => 'date',
  98. 'params' => 'Y-m-d H:i:s,###'
  99. )
  100. ),
  101. array(
  102. 'name' => 'status',
  103. 'title' => '留言状态',
  104. 'format' => 'enum',
  105. 'extra' => array(
  106. 'options' => array(
  107. 0 => '<font color="blue">未审核</font>',
  108. 1 => '<font color="green">审核通过</font>',
  109. 2 => '<font color="red">审核不通过</font>'
  110. )
  111. )
  112. ),
  113. array(
  114. 'name' => 'id',
  115. 'title' => '操作',
  116. 'format' => 'custom',
  117. 'extra' => array(
  118. 'options' => array(
  119. 'edit' => array(
  120. 'title' => '编辑留言',
  121. 'url' => create_addon_url('edit', array('id'=>'{id}')),
  122. 'class' => 'btn btn-primary btn-sm icon-edit',
  123. 'attr' => ''
  124. ),
  125. 'delete' => array(
  126. 'title' => '删除留言',
  127. 'url' => create_addon_url('delete', array('id'=>'{id}')),
  128. 'class' => 'btn btn-danger btn-sm icon-delete',
  129. 'attr' => ''
  130. )
  131. )
  132. )
  133. )
  134. ),
  135. 'list_map' => array('mpid'=>get_mpid()),
  136. 'list_order' => 'create_time desc'
  137. )
  138. ),
  139. 'install_sql' => 'install.sql'
  140. );
  141. ?>