Browse Source

新闻模块

linwu 2 năm trước cách đây
mục cha
commit
3a3485a7d8

+ 58 - 52
app/Http/Controllers/Web/Content/ArticleController.php

@@ -1,4 +1,5 @@
 <?php
+
 namespace App\Http\Controllers\Web\Content;
 
 use App\Http\Controllers\Web\WebBaseController;
@@ -25,20 +26,20 @@ class ArticleController extends WebBaseController
      */
     public function __construct(ArticleService $articleService, ArticleCategoryService $articleCategoryService, AdService $adService, NavigationService $navigationService)
     {
-        $this->articleService = $articleService;
+        $this->articleService         = $articleService;
         $this->articleCategoryService = $articleCategoryService;
-        $this->adService = $adService;
-        $this->navigationService = $navigationService;
+        $this->adService              = $adService;
+        $this->navigationService      = $navigationService;
     }
 
     public function index(Request $request, $id = '1', $num = '8', $focus = '3', $recommend = '4', $other_num = '5')
     {
-        $key = $request->input('key');
+        $key       = $request->input('key');
         $categorys = $this->articleCategoryService->getChildCategorys($id, $num);
         $search_id = '';
         if ($categorys) {
-            $search_id = $categorys[0]->id;
-            $search_where = array();
+            $search_id          = $categorys[0]->id;
+            $search_where       = [];
             $search_where['id'] = $search_id;
             if ($id != '1') {
                 $search_where['parent_id'] = $id;
@@ -60,71 +61,76 @@ class ArticleController extends WebBaseController
             $rst = $this->articleService->list($key, '', 10);
         }
 
-        $focus_articles = $this->articleService->getPropertyArticles($focus, $other_num); //热门资讯
+        $focus_articles     = $this->articleService->getPropertyArticles($focus, $other_num); //热门资讯
         $recommend_articles = $this->articleService->getPropertyArticles($recommend, $other_num); //推荐资讯
         //顶部广告位
-        $ad_data = array(
-            'theme'       => 'default',
-            'org'         => 'Home',
-            'alias'       => 'AIX_news_index_top',
-            'num'         => '1'
-        );
+        $ad_data = [
+            'theme' => 'default',
+            'org'   => 'Home',
+            'alias' => 'AIX_news_index_top',
+            'num'   => '1',
+        ];
         $top_ads = $this->adService->getAds($ad_data);
 
-        $return_data = array(
+        $return_data = [
             'articles'           => $rst,
             'categorys'          => $categorys,
             'focus_articles'     => $focus_articles,
             'recommend_articles' => $recommend_articles,
-            'key'                  => $key,
-            'top_ads'              => $top_ads
-        );
+            'key'                => $key,
+            'top_ads'            => $top_ads,
+        ];
         return view('app.content.article.index', $return_data);
     }
 
     public function list(Request $request, $id, $parent_id = '1', $num = '8', $focus = '3', $recommend = '4', $other_num = '5')
     {
-        $key = $request->input('key');
-        $lists = $this->articleService->list($key, $id, '10');
-        $categorys = $this->articleCategoryService->getChildCategorys($parent_id, $num);
-        $focus_articles = $this->articleService->getPropertyArticles($focus, $other_num); //热门资讯
+        $key                = $request->input('key');
+        $info               = $this->articleCategoryService->getInfo($id);
+        $lists              = $this->articleService->list($key, $id, '10');
+        $categorys          = $this->articleCategoryService->getChildCategorys($info['parent_id'], $num);
+        $categorys_child    = $this->articleCategoryService->getChildCategorys($id, 10);
+        $focus_articles     = $this->articleService->getPropertyArticles($focus, $other_num); //热门资讯
         $recommend_articles = $this->articleService->getPropertyArticles($recommend, $other_num); //推荐资讯
+        $bread              = $this->articleCategoryService->getBread($info['id']);
 
         //获取后台职场资讯名称
-        $where = array(
-            'alias'=>'AIX_top',
+        $where        = [
+            'alias'     => 'AIX_top',
             'pagealias' => 'AIX_news',
-            'display'=>'1'
-        );
-        $topNav = $this->navigationService->getTopNav($where);
-        $now_cate = '';
-        $article_cate = array();
+            'display'   => '1',
+        ];
+        $topNav       = $this->navigationService->getTopNav($where);
+        $now_cate     = '';
+        $article_cate = [];
         foreach ($categorys as $k => $v) {
             if ($v->id == $id) {
-                $now_cate = $v->category_name;
+                $now_cate     = $v->category_name;
                 $article_cate = $v;
             }
         }
         $this->putSeoData('article_cate', $article_cate);
 
-        $return_data = array(
-            'articles'=>$lists,
-            'categorys'=>$categorys,
-            'focus_articles'=>$focus_articles,
-            'recommend_articles'=>$recommend_articles,
-            'key'=>$key,
-            'type_id'=>$id,
-            'top_nav'=>$topNav,
-            'now_cate'=>$now_cate,
-        );
+        $return_data = [
+            'articles'           => $lists,
+            'categorys'          => $categorys,
+            'focus_articles'     => $focus_articles,
+            'recommend_articles' => $recommend_articles,
+            'key'                => $key,
+            'type_id'            => $id,
+            'top_nav'            => $topNav,
+            'now_cate'           => $now_cate,
+            'categorys_child'    => $categorys_child,
+            'bread'              => $bread,
+        ];
 
         return view('app.content.article.list', $return_data);
     }
 
     public function show($id, $parent_id = '1', $num = '8', $focus = '3', $recommend = '4', $other_num = '5')
     {
-        $categorys = $this->articleCategoryService->getChildCategorys($parent_id, $num);
-        $focus_articles = $this->articleService->getPropertyArticles($focus, $other_num); //热门资讯
+        $categorys          = $this->articleCategoryService->getChildCategorys($parent_id, $num);
+        $focus_articles     = $this->articleService->getPropertyArticles($focus, $other_num); //热门资讯
         $recommend_articles = $this->articleService->getPropertyArticles($recommend, $other_num); //推荐资讯
 
         $article_info = $this->articleService->getArticleInfo($id);
@@ -135,24 +141,24 @@ class ArticleController extends WebBaseController
 
         $this->putSeoData('article', $article_info);
 
-        $return_data = array(
-            'categorys'=>$categorys,
-            'focus_articles'=>$focus_articles,
-            'recommend_articles'=>$recommend_articles,
-            'type_id'=>$id,
-            'info'=>$article_info,
-            'parent_id'=>$parent_id
-        );
+        $return_data = [
+            'categorys'          => $categorys,
+            'focus_articles'     => $focus_articles,
+            'recommend_articles' => $recommend_articles,
+            'type_id'            => $id,
+            'info'               => $article_info,
+            'parent_id'          => $parent_id,
+        ];
 
         return view('app.content.article.show', $return_data);
     }
 
     public function click($id)
     {
-        $rst = $this->articleService->incrementData(array('id'=>$id), 1, 'click');
-        $data = array('status'=>0);
+        $rst  = $this->articleService->incrementData(['id' => $id], 1, 'click');
+        $data = ['status' => 0];
         if ($rst) {
-            $data = array('status'=>1);
+            $data = ['status' => 1];
         }
         return response()->json($data);
     }

+ 24 - 0
app/Repositories/ArticleCategoryRepository.php

@@ -31,5 +31,29 @@ class ArticleCategoryRepository extends BaseRepository
         return $this->model->where($where)->orderBy('list_order', 'desc')->orderBy('created_at', 'desc')->limit($limit)->get();
     }
 
+    public function getInfo($id)
+    {
+        $info = $this->model->where('id', $id)->first();
+        return $info;
+    }
+
+    public function getBread($id)
+    {
+        $info = $this->model->where('id', $id)->first();
+        $res  = [['id' => $info['id'], 'name' => $info['category_name']]];
+        if ($info['parent_id'] != 0) {
+            $this->_getBread($info, $res);
+        }
 
+        return $res;
+    }
+
+    private function _getBread($info, &$res)
+    {
+        $cate = $this->model->where('id', $info['parent_id'])->first();
+        array_unshift($res, ['id' => $cate['id'], 'name' => $cate['category_name']]);
+        if ($cate['parent_id'] != 0) {
+            $this->_getBread($cate, $res);
+        }
+    }
 }

+ 13 - 2
app/Services/Content/ArticleCategoryService.php

@@ -1,4 +1,5 @@
 <?php
+
 namespace App\Services\Content;
 
 use App\Repositories\ArticleCategoryRepository;
@@ -23,11 +24,21 @@ class ArticleCategoryService
 
     public function getChildCategorys($id, $limit)
     {
-        $where = array();
+        $where              = [];
         $where['parent_id'] = $id;
-        $list=$this->articleCategoryRepository->getChildCategorys($where, $limit);
+        $list               = $this->articleCategoryRepository->getChildCategorys($where, $limit);
         return $list;
     }
 
+    public function getInfo($id)
+    {
+        $info = $this->articleCategoryRepository->getInfo($id);
+        return $info;
+    }
 
+    public function getBread($id)
+    {
+        $list = $this->articleCategoryRepository->getBread($id);
+        return $list;
+    }
 }

+ 7 - 1
public/themes/default/assets/app/css/article/article.css

@@ -169,4 +169,10 @@
 .news .l .newslist .listb.news_noimg .br,.newslip .l .newslist .listb.news_noimg .br{ margin-left:20px; width:820px;}
 .news .l .newslist .listb.news_noimg .br .t,.news .l .newslist .listb.news_noimg .br .summary,.newslip .l .newslist .listb.news_noimg .br .t,.newslip .l .newslist .listb.news_noimg .br .summary,.newslip .l .newslist .listb.news_noimg .br .time{ width:800px;}
 .newslist .listb.news_noimg .br .t{width: 500px !important;overflow: hidden;white-space: nowrap;text-overflow: ellipsis;float: left;}
-.listb.news_noimg .br .time{width: 300px !important;float: left;}
+.listb.news_noimg .br .time{width: 300px !important;float: left;}
+
+/*二级分类*/
+.erji_category{border:1px #EEEEEE solid;width:838px;border-top:0;padding:10px;}
+.erji_category *{-webkit-box-sizing: border-box;-moz-box-sizing: border-box;box-sizing: border-box;}
+.erji_category a{margin:5px 15px;display:inline-block;}
+.erji_category a:hover,.erji_category a.select{color:#dd4250;}

+ 13 - 3
public/themes/default/views/app/content/article/list.blade.php

@@ -38,6 +38,15 @@
                 @endif
                 <div class="clear"></div>
             </div>
+
+            @if(!empty($categorys_child))
+                <div id="erjifenlei" class="erji_category">
+                    @foreach($categorys_child as $k=>$v)
+                        <a href="{{route('news.list',['id'=>$v->id])}}" @if($v->id == $type_id) class="select" @endif>{{$v->category_name}}</a>
+                    @endforeach
+                </div>
+            @endif
+
             <div class="newslist">
 
                 @if($key)
@@ -47,9 +56,10 @@
                 @else
                     <div class="link_gray6 tit">
                         <a href="/">网站首页</a>
-                        <span>></span><a href="{{route(url_rewrite($top_nav->pagealias))}}">{{$top_nav->title}}</a>
-                        @if($now_cate)
-                            <span>></span><a href="#">{{$now_cate}}</a>
+                        @foreach($bread as $k=>$v)
+                            <span>></span><a href="{{route('news.list',['id'=>$v['id']])}}">{{$v['name']}}</a>
+                        @endforeach
+                        @if($bread)
                         @endif
 
                     </div>