TemplateDict.php 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | Niucloud-admin 企业快速开发的多应用管理平台
  4. // +----------------------------------------------------------------------
  5. // | 官方网址:https://www.niucloud.com
  6. // +----------------------------------------------------------------------
  7. // | niucloud团队 版权所有 开源版本可自由商用
  8. // +----------------------------------------------------------------------
  9. // | Author: Niucloud Team
  10. // +----------------------------------------------------------------------
  11. namespace app\dict\diy;
  12. use core\dict\DictLoader;
  13. /**
  14. * 页面模板
  15. */
  16. class TemplateDict
  17. {
  18. /**
  19. * 根据关键字查询:key 格式:[ 'DIY_INDEX', 'DIY_MEMBER_INDEX','DIY_SHOP_MEMBER_INDEX' ]
  20. * 查询指定类型的页面:type 格式:'type' => 'member_index'
  21. * 查询指定插件定义的所有页面:addon 格式:'addon' => 'shop'
  22. * 查询可装修的页面类型:action 格式:'action' => 'decorate'
  23. * 查询存在模板页面的应用插件列表:query 格式:'query' => 'addon'
  24. * @param array $params
  25. * @return array|null
  26. */
  27. public static function getTemplate($params = [])
  28. {
  29. $system_pages = [
  30. 'DIY_INDEX' => [
  31. 'title' => get_lang('dict_diy.page_index'),
  32. 'page' => '/app/pages/index/index',
  33. 'action' => 'decorate', // 页面是否装修标识,为空标识不装修,decorate:装修
  34. 'type' => 'index' // 页面类型,index:首页、member_index:个人中心,空:普通页面
  35. ],
  36. 'DIY_SITE_INDEX' => [
  37. 'title' => get_lang('dict_diy.page_site_index'),
  38. 'page' => '/app/pages/site/index',
  39. 'action' => 'decorate',
  40. 'type' => ''
  41. ],
  42. 'DIY_MEMBER_INDEX' => [
  43. 'title' => get_lang('dict_diy.page_member_index'),
  44. 'page' => '/app/pages/member/index',
  45. 'action' => 'decorate',
  46. 'type' => 'member_index'
  47. ],
  48. 'DIY_PAGE' => [
  49. 'title' => get_lang('dict_diy.page_diy'),
  50. 'page' => '/app/pages/index/diy',
  51. 'action' => '',
  52. 'type' => ''
  53. ]
  54. ];
  55. // 查询存在模板页面的应用插件列表
  56. if (!empty($params[ 'query' ]) && $params[ 'query' ] == 'addon') {
  57. $system = [
  58. 'app' => [
  59. 'title' => '系统',
  60. 'key' => 'app',
  61. 'list' => $system_pages
  62. ]
  63. ];
  64. $addon = ( new DictLoader("UniappTemplate") )->load([ 'data' => $system, 'params' => $params ]);
  65. $app = array_merge($system, $addon);
  66. return $app;
  67. } else {
  68. // 查询应用插件下的模板页面数据
  69. $pages = ( new DictLoader("UniappTemplate") )->load([ 'data' => $system_pages, 'params' => $params ]);
  70. // 根据关键字查询
  71. if (!empty($params[ 'key' ])) {
  72. $temp = [];
  73. foreach ($params[ 'key' ] as $k => $v) {
  74. if (!empty($pages[ $v ])) {
  75. $temp[ $v ] = $pages[ $v ];
  76. }
  77. }
  78. return $temp;
  79. }
  80. // 查询指定类型的页面
  81. if (!empty($params[ 'type' ])) {
  82. $temp = [];
  83. foreach ($pages as $k => $v) {
  84. if (isset($v[ 'type' ]) && $params[ 'type' ] == $v[ 'type' ]) {
  85. $temp[ $k ] = $v;
  86. }
  87. }
  88. return $temp;
  89. }
  90. // 查询可装修的页面类型
  91. if (!empty($params[ 'action' ])) {
  92. $temp = [];
  93. foreach ($pages as $k => $v) {
  94. if (isset($v[ 'action' ]) && $params[ 'action' ] == $v[ 'action' ]) {
  95. $temp[ $k ] = $v;
  96. }
  97. }
  98. return $temp;
  99. }
  100. return $pages;
  101. }
  102. }
  103. }