data_request['id'])) { MyViewAssign('msg', MyLang('article.article_id_params_tips')); return MyView('public/tips_error'); } // 获取数据 $id = intval($this->data_request['id']); $params = [ 'where' => [ ['is_enable', '=', 1], ['id', '=', $id], ], 'm' => 0, 'n' => 1, ]; $ret = ArticleService::ArticleList($params); if(!empty($ret['data'][0])) { $article = $ret['data'][0]; // 访问统计 ArticleService::ArticleAccessCountInc(['id'=>$id]); // 是否外部链接 if(!empty($article['jump_url'])) { return MyRedirect($article['jump_url']); } // 模板数据 $assign = [ // 文章 'article' => $article, // 上一篇、下一篇 'last_next_data' => ArticleService::ArticleLastNextData($id), // 面包屑导航 'breadcrumb_data' => BreadcrumbService::Data('ArticleDetail', ['article'=>$article]), // 推荐文章 'recommended_article_list' => ArticleService::RecommendedArticleList(), ]; // 所有文章分类 $article_category = ArticleCategoryService::ArticleCategoryList(); $assign['category_list'] = $article_category['data']; // seo $seo_title = empty($article['seo_title']) ? $article['title'] : $article['seo_title']; $assign['home_seo_site_title'] = SeoService::BrowserSeoTitle($seo_title, 2); if(!empty($article['seo_keywords'])) { $assign['home_seo_site_keywords'] = $article['seo_keywords']; } if(!empty($article['seo_desc'])) { $assign['home_seo_site_description'] = $article['seo_desc']; } // 数据赋值 MyViewAssign($assign); // 钩子 $this->PluginsContentHook($id, $article); return MyView(); } // 无数据 MyViewAssign('msg', MyLang('article.article_no_data_tips')); return MyView('public/tips_error'); } /** * 文章分类 * @author Devil * @blog http://gong.gg/ * @version 1.0.0 * @date 2021-11-08 * @desc description */ public function Category() { // post搜索 if(IS_POST) { $request_params = []; if(!empty($this->data_post['awd'])) { $request_params['awd'] = StrToAscii($this->data_post['awd']); } if(!empty($this->data_post['id'])) { $request_params['id'] = intval($this->data_post['id']); } return MyRedirect(MyUrl('index/article/category', $request_params)); } $params = $this->data_request; // 条件 $where = ArticleService::ArticleWhere($this->data_request); // 总数 $total = ArticleService::ArticleTotal($where); // 分页 $page_params = [ 'number' => $this->page_size, 'total' => $total, 'where' => $this->data_request, 'page' => $this->page, 'url' => MyUrl('index/article/category'), ]; $page = new \base\Page($page_params); // 获取列表 $data_params = array_merge($params, [ 'm' => $page->GetPageStarNumber(), 'n' => $this->page_size, 'where' => $where, ]); $ret = ArticleService::ArticleList($data_params); // 关键字处理 if(!empty($params['awd'])) { $params['awd'] = AsciiToStr($params['awd']); } // 所有文章分类 $article_category = ArticleCategoryService::ArticleCategoryList($this->data_request); // 分类信息 $category_info = ArticleCategoryService::ArticleCategoryInfo($this->data_request, $article_category['data']); // 模板数据 $assign = [ // 列表数据 'page_html' => $page->GetPageHtml(), 'data_list' => $ret['data'], 'params' => $params, // 分类信息 'category_info' => $category_info, // 所有分类 'category_list' => $article_category['data'], // 面包屑导航 'breadcrumb_data' => BreadcrumbService::Data('ArticleCategory', ['category_info'=>$category_info]), ]; // 浏览器名称 $assign['home_seo_site_title'] = SeoService::BrowserSeoTitle((empty($params['awd']) ? '' : $params['awd'].' - ').(empty($category_info) ? MyLang('article.category_base_nav_title') : $category_info['name']), 1); // 数据赋值 MyViewAssign($assign); // 钩子 $this->PluginsCategoryHook($ret['data'], $this->data_request); return MyView(); } /** * 分类钩子处理 * @author whats * @version 1.0.0 * @date 2019-04-22 * @desc description * @param [array] $data [文章内容] * @param [array] $params [输入参数] */ private function PluginsCategoryHook(&$data, $params = []) { $hook_arr = [ // 分类内容顶部钩子 'plugins_view_article_category_top', // 分类底部钩子 'plugins_view_article_category_bottom', // 分类内容顶部钩子 'plugins_view_article_category_content_top', // 分类内容底部钩子 'plugins_view_article_category_content_botton', ]; $assign = []; foreach($hook_arr as $hook_name) { $assign[$hook_name.'_data'] = MyEventTrigger($hook_name, [ 'hook_name' => $hook_name, 'is_backend' => false, 'data' => &$data, 'params' => $params, ]); } MyViewAssign($assign); } /** * 内容钩子处理 * @author whats * @version 1.0.0 * @date 2019-04-22 * @desc description * @param [int] $article_id [文章id] * @param [array] $article [文章内容] */ private function PluginsContentHook($article_id, &$article) { $hook_arr = [ // 文章内容顶部钩子 'plugins_view_article_detail_top', // 文章底部钩子 'plugins_view_article_detail_bottom', // 文章内容内顶部钩子 'plugins_view_article_detail_inside_top', // 文章内容顶部钩子 'plugins_view_article_detail_content_top', // 文章内容底部钩子 'plugins_view_article_detail_content_botton', // 文章左侧内部顶部钩子 'plugins_view_article_detail_left_inside_top', // 文章左侧内部底部钩子 'plugins_view_article_detail_left_inside_botton', ]; $assign = []; foreach($hook_arr as $hook_name) { $assign[$hook_name.'_data'] = MyEventTrigger($hook_name, [ 'hook_name' => $hook_name, 'is_backend' => false, 'article_id' => $article_id, 'article' => &$article, ]); } MyViewAssign($assign); } } ?>