urlRecord('网站首页'); } //清除可能存在的栏目分类树id cache(Data::CURR_CATEGORY_PATENT_ID, false); //模板兼容性标签 $this->assign('id', false); $this->assign('cid', false); return $this->fetch(); } /** * 友链申请 * @param Request $request * @return string * @throws DataNotFoundException * @throws DbException * @throws ModelNotFoundException * @author 木子的忧伤 * @date 2021-10-17 1:03 */ public function applylink(Request $request) { if (request()->isPost()) { $data = Util::postMore([ ['id', ''], ['title', ''], ['url', ''], ['image', ''], ['description', ''], ]); $friendLinkValidate = new FriendLinkValidate(); if (!$friendLinkValidate->check($data)) { $this->error($friendLinkValidate->getError()); } //判断下用户是否存在 $info = friendLinkModel::where('url', $data['url'])->find(); if ($info) { $this->error("记录已存在"); } $data['status'] = 0; $res = friendLinkModel::create($data); if ($res) { $this->success('申请成功,请耐心等待审核'); } else { $this->error('提交失败,请联系站长查看'); } } else { //清除可能存在的栏目分类树id cache(Data::CURR_CATEGORY_PATENT_ID, false); //模板兼容性标签 $this->assign('id', false); $this->assign('cid', false); return $this->fetch(); } } /** * 留言页面 * @param Request $request * @return string * @throws DataNotFoundException * @throws DbException * @throws ModelNotFoundException * @author 木子的忧伤 * @date 2021-10-17 1:03 */ public function msg(Request $request) { if (request()->isPost()) { $data = Util::postMore([ ['author', ''], ['tel', ''], ['email', ''], ['content', ''], ]); $data['create_time'] = time(); $data['reply_content'] = ''; $messageFormValidate = new MsgValidate(); if (!$messageFormValidate->check($data)) { $this->error($messageFormValidate->getError()); } $res = MessageFormModel::create($data); if ($res) { $this->success('留言成功'); } else { $this->error('留言失败'); } } else { //清除可能存在的栏目分类树id cache(Data::CURR_CATEGORY_PATENT_ID, false); //模板兼容性标签 $this->assign('id', false); $this->assign('cid', false); return $this->fetch(); } } /** * 关于页面 * @param Request $request * @author 木子的忧伤 * @date 2022-06-21 23:48 */ public function about(Request $request) { $id = "about"; //获取该文章 $documentModel = new Document(); $article = $documentModel->getInfo($id, Data::DOCUMENT_TYPE_PAGE); if (!$article) { $this->error('文章不存在或已删除!'); } //添加当前页面的位置信息 $article['position'] = '首页>'; //更新浏览次数 $documentModel->where('id', $article['id'])->inc('view')->update(); $template = Data::DOCUMENT_TYPE_PAGE . '/' . ($article['theme'] ?: 'detail.html'); $templateFile = config('view.view_path') . $template; if (!is_file($templateFile)) { $this->error('模板文件不存在!'); } $article['category_title'] = "单页"; //判断SEO 为空则取系统 $article['keywords'] = $article['keywords'] ?: web_config('keywords'); $article['description'] = $article['description'] ?: web_config('description'); //输出文章内容 $this->assign('apeField', $article); $this->assign('id', $id); //当前页面所属分类id $this->assign('cid', $article['category_id']); //设置文章的url $article['link_str'] = make_detail_url($article); //判断后台统计配置是否开启 1 开启 if (web_config("web_statistics") == 1) { //统计url $this->urlRecord($article['title']); } Log::info('详情页模板路径:' . $templateFile); //去除后缀 $template = substr($template, 0, strpos($template, '.')); return $this->fetch($template); } /** * 标签列表 * @return mixed * @author 木子的忧伤 * @date 2021-11-11 0:27 */ public function tagList() { $where = Util::postMore([ ['name', ''], ['page', 1], ['limit', 10] ]); return app("json")->layui(TagModel::getList($where)); } /** * 生成sitemap.xml * @return \think\Response * @throws DataNotFoundException * @throws DbException * @throws ModelNotFoundException */ public function sitemap(): \think\Response { //获取域名 $domain = request()->domain(); $cache_key = "sitemap.xml"; //先获取缓存是否存在 if ($content = cache($cache_key)){ return response($content)->header(['Content-Type'=>'application/xml']); } // 通过输出缓冲区内容,生成XML $str = ''; $str.= ''; //首页 $str .= ''; $str .= '' . $domain . ''; $str .= '' . date("Y-m-d\TH:i:s+00:00",time()). ''; $str .= 'daily'; $str .= '1.0'; $str .= ''; //获取文章分类url $documentCategoryModel = new DocumentCategoryModel(); $categoryInfo = $documentCategoryModel->field('id,alias,title,create_time') ->where('status', 1) ->order('id desc')->select(); foreach ($categoryInfo as $v) { $str .= ''; $str .= '' . url('index/article/lists',["id"=>$v['id']],".html",$domain) . ''; $str .= '' . date("Y-m-d\TH:i:s+00:00",strtotime($v['create_time'])) . ''; $str .= 'always'; $str .= '0.8'; $str .= ''; } //获取文章URL $documentModel = new DocumentModel(); $documentInfo = $documentModel->field('id,alias,create_time') ->where('display', 1) ->order('id desc')->select(); foreach ($documentInfo as $v) { $str .= ''; $str .= '' . url('/article/detail',["id"=>$v["alias"]?:$v['id']],".html",$domain) . ''; $str .= ''.date("Y-m-d\TH:i:s+00:00",strtotime($v['create_time'])) .''; $str .= 'monthly'; $str .= '0.6'; $str .= ''; } //获取文章标签页url $documentModel = new TagModel(); $documentInfo = $documentModel->field('name,create_time') ->group('name') ->order('name desc')->select(); foreach ($documentInfo as $v) { $str .= ''; $str .= '' . url('/article/tag',["t"=>$v["name"]],".html",$domain) . ''; $str .= ''.date("Y-m-d\TH:i:s+00:00",strtotime($v['create_time'])) .''; $str .= 'monthly'; $str .= '0.6'; $str .= ''; } $str .= ''; cache($cache_key,$str,24*60*60);//每日更新 // 将内容输出到浏览器 return response($str)->header(['Content-Type'=>'application/xml']); } }