system = System::getSystem(); $this->data['system'] = $this->system; $this->data['links'] = Link::getList(); if (session('?__token__')) { $this->data['_token'] = session('__token__'); } else { $this->data['_token'] = $this->request->buildToken(); } $this->isMobile = request()->isMobile(); $this->data['config'] = ConfigSetting::getConfigContentsByName('extraBase'); $this->data['isMobile'] = $this->isMobile; $this->nav(); $this->logVisit(); $this->setNofollowATagNames(); } //设置SEO信息 protected function setSeo($title, $keywords = '', $description = '') { $this->data['seoTitle'] = $title; $this->data['seoKeywords'] = $keywords; $this->data['seoDescription'] = $description; } //模板 protected function view($template = '') { return view($template)->assign($this->data); } public function setExtraBaseConfig() { $this->data['extraBase'] = ConfigSetting::getConfigContentsByName('extraBase'); } /* * 重构异常提示页面 */ protected function error($msg = '', string $url = null, $data = [], int $code = 404): Redirect { switch ($code) { case 500: return $this->redirect('/500.html'); default: return $this->redirect('/404.html'); } } // 记录访问日志 protected function logVisit() { $referer = $_SERVER["HTTP_REFERER"] ?? ''; $domain = $this->request->domain(); $checkDomain = substr($referer, 0, strlen($domain)); if (!empty($referer) && $domain !== $checkDomain) { // session('first_landing_page', $this->request->url(true)); VisitLogoModel::create([ 'ip' => request()->ip(), 'referer' => $referer, 'visit' => $this->request->url(true), 'create_time' => time(), ]); } } // HTML a标签设置 rel="nofollow" 属性,禁止搜索引擎追踪 protected function setNofollowATagNames() { $this->data['nofollowList'] = [ ]; $this->data['footerAllowFollowList'] = [ '客户案例', '公司新闻', ]; } protected function nav() { $this->data['menus'] = Category::navList()['menus']; } // 所有下级栏目ID private function getAllSubordinateIds($items, $curId = 0) { $list = []; foreach ($items as $k => $item) { if ($item['parent_id'] == $curId) { $list[] = $item['id']; unset($items[$k]); $childrenIds = $this->getAllSubordinateIds($items, $item['id']); if ($childrenIds) { $list = array_merge($list, $childrenIds); } } } return $list; } // 获取所在一级栏目banner图 protected function firstBanner($category): array { // 一级栏目的banner $firstCategoryId = Category::firstGradeId($category['path'], $category['id']); $bgImg = []; if ($firstCategoryId == $category['id']) { $bgImg['pc'] = ['src' => $category['src'] ?? '', 'title' => $category['title'] ?? '']; $bgImg['mobile'] = ['src' => $category['src_mobile'] ?? '', 'title' => $category['title'] ?? '']; } else { $firstCategory = Category::where('id', $firstCategoryId)->field('id,title,src,src_mobile')->find(); $bgImg['pc'] = ['src' => $firstCategory['src'] ?? '', 'title' => $firstCategory['title'] ?? '']; $bgImg['mobile'] = ['src' => $firstCategory['src_mobile'] ?? '', 'title' => $firstCategory['title'] ?? '']; } return $bgImg; } // 获取所在一级栏目背景图 protected function firstBg($category) { // 一级栏目的banner $firstCategoryId = Category::firstGradeId($category['path'], $category['id']); if ($firstCategoryId == $category['id']) { $this->data['bg_pc'] = $category['bg']; $this->data['bg_mobile'] = $category['bg_mobile']; } else { $firstCategory = Category::where('id', $firstCategoryId)->field('id,title,bg,bg_mobile')->find(); $this->data['bg_pc'] = $firstCategory['bg']; $this->data['bg_mobile'] = $firstCategory['bg_mobile']; } } }