Base.php 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. <?php
  2. namespace addons\wwh\controller;
  3. use think\Db;
  4. use fast\Tree;
  5. class Base extends \think\addons\Controller
  6. {
  7. /**
  8. * 初始化控制器
  9. */
  10. public function _initialize()
  11. {
  12. parent::_initialize();
  13. // 初始化语言设置
  14. $this->initLanguage();
  15. // 加载站点配置
  16. $this->loadSiteConfig();
  17. // 初始化导航数据
  18. $this->initNavigation();
  19. }
  20. /**
  21. * 初始化语言设置
  22. */
  23. protected function initLanguage()
  24. {
  25. $config = get_addon_config('wwh');
  26. $this->lang = (int)cookie('lang');
  27. $switch_lang = $config['switch_lang'];
  28. // 设置默认语言
  29. if (empty($this->lang) && !empty($config['set_lang'])) {
  30. $this->lang = $config['set_lang'];
  31. cookie('lang', $this->lang);
  32. }
  33. $this->assign([
  34. 'switch_lang' => $switch_lang,
  35. 'lang' => $this->lang
  36. ]);
  37. }
  38. /**
  39. * 加载站点配置
  40. */
  41. protected function loadSiteConfig()
  42. {
  43. $site = Db::name('wwh_config')
  44. ->where('lang', $this->lang)
  45. ->find();
  46. if (empty($site)) {
  47. $this->error('站点配置数据为空');
  48. }
  49. $this->assign('site', $site);
  50. // 设置模板路径
  51. $this->view->engine->config(
  52. 'view_path',
  53. $this->view->engine->config('view_path') . $site['template'] . DS
  54. );
  55. }
  56. /**
  57. * 初始化导航数据
  58. */
  59. protected function initNavigation()
  60. {
  61. // 获取所有正常状态的栏目
  62. $columns = Db::name('wwh_column')
  63. ->where('status', 'normal')
  64. ->order('weigh desc')
  65. ->select();
  66. // 主导航
  67. $navList = array_filter($columns, function($item) {
  68. return $item['isnav'] == '1';
  69. });
  70. $navTree = Tree::instance()
  71. ->init(collection($navList)->toArray(), 'parent_id')
  72. ->getTreeArray(0);
  73. $this->assign('nav', $navTree);
  74. // 资料下载导航
  75. $fullTree = Tree::instance()
  76. ->init(collection($columns)->toArray(), 'parent_id')
  77. ->getTreeArray(0);
  78. $this->assign('nav2', $fullTree);
  79. // 导航ID
  80. $navMap = array_column($columns, null, 'id');
  81. $this->assign('navId', $navMap);
  82. }
  83. }