Cmsbase.php 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. <?php
  2. namespace addons\cms\controller;
  3. use think\facade\Config;
  4. use think\facade\Db;
  5. class Cmsbase extends \think\addons\Controller
  6. {
  7. protected $cmsConfig = [];
  8. protected $siteLang = 'cn';
  9. protected $defaultSiteLang = 'cn';
  10. protected $langList = [];
  11. protected $regionList = [];
  12. protected $siteRegion = [];
  13. protected function initialize()
  14. {
  15. parent::initialize();
  16. $this->cmsConfig = get_addon_config('cms');
  17. if (!$this->cmsConfig['web_site_status']) {
  18. $this->error('站点已经关闭,请稍后访问~');
  19. }
  20. $Theme = Config::get('site.theme') ?: 'default';
  21. Config::set(['view_path' => TEMPLATE_PATH . $Theme . '/cms' . DS], 'view');
  22. $this->app->bind('think\Paginator', 'addons\cms\paginator\Page');
  23. $this->initLang();
  24. }
  25. protected function initLang()
  26. {
  27. $this->langList = Db::name('lang')->where('is_enabled', 1)->order('sort asc,id asc')->select()->toArray();
  28. $this->regionList = cms_enabled_regions();
  29. $this->defaultSiteLang = cms_default_lang();
  30. $this->siteLang = cms_current_lang();
  31. $this->siteRegion = cms_current_region();
  32. if ($this->siteLang !== $this->defaultSiteLang) {
  33. $translate = Db::name('cms_config_data')->where('lang', $this->siteLang)->find();
  34. if ($translate) {
  35. foreach (['site_name', 'site_title', 'site_keyword', 'site_description', 'site_logo_light', 'site_logo_dark'] as $field) {
  36. if (isset($translate[$field]) && $translate[$field] !== '') {
  37. $this->cmsConfig[$field] = $translate[$field];
  38. }
  39. }
  40. }
  41. }
  42. $this->assign('cms_config', $this->cmsConfig);
  43. $this->assign('site_lang', $this->siteLang);
  44. $this->assign('default_site_lang', $this->defaultSiteLang);
  45. $this->assign('site_langs', $this->langList);
  46. $this->assign('site_regions', $this->regionList);
  47. $this->assign('site_region', $this->siteRegion);
  48. }
  49. }