59 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			PHP
		
	
	
		
		
			
		
	
	
			59 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			PHP
		
	
	
|  | <?php | ||
|  | 
 | ||
|  | namespace app\traits\cms; | ||
|  | 
 | ||
|  | use app\model\Archives; | ||
|  | use think\Collection; | ||
|  | use think\db\exception\DataNotFoundException; | ||
|  | use think\db\exception\DbException; | ||
|  | use think\db\exception\ModelNotFoundException; | ||
|  | use think\Paginator; | ||
|  | 
 | ||
|  | trait ArticleTrait | ||
|  | { | ||
|  |     /** | ||
|  |      * 获取指定栏目下文章列表 | ||
|  |      * | ||
|  |      * @param  int  $cateId | ||
|  |      * @param  int  $pageSize | ||
|  |      * @param  string  $keywords | ||
|  |      * @return Paginator | ||
|  |      */ | ||
|  |     public function getArticleByCateIdWithPaginate(int $cateId, int $pageSize = 20, string $keywords = ''): Paginator | ||
|  |     { | ||
|  |         return Archives::getListPageByCategory($cateId, $pageSize, $keywords); | ||
|  |     } | ||
|  | 
 | ||
|  |     /** | ||
|  |      * 获取指定栏目下文章列表 | ||
|  |      * | ||
|  |      * @param  int  $cateId | ||
|  |      * @param  int  $pageSize | ||
|  |      * @return array|Collection | ||
|  |      * @throws DataNotFoundException | ||
|  |      * @throws DbException | ||
|  |      * @throws ModelNotFoundException | ||
|  |      */ | ||
|  |     public function getArticleListByCateId(int $cateId, int $pageSize = 20) | ||
|  |     { | ||
|  |         return Archives::getListByCategory($cateId, $pageSize, true); | ||
|  |     } | ||
|  | 
 | ||
|  |     /** | ||
|  |      * 获取文章 本身+上一篇+下一篇 | ||
|  |      * | ||
|  |      * @param  int  $id | ||
|  |      * @return array | ||
|  |      * @throws DataNotFoundException | ||
|  |      * @throws DbException | ||
|  |      * @throws ModelNotFoundException | ||
|  |      */ | ||
|  |     public function nearbyArticle(int $id): array | ||
|  |     { | ||
|  |         $article        = Archives::findById($id); | ||
|  |         $res['prev']    = Archives::getPrevArticleByIdAndCategoryId($id, $article['category_id']) ?: []; | ||
|  |         $res['next']    = Archives::getNextArticleByIdAndCategoryId($id, $article['category_id']) ?: []; | ||
|  |         $res['oneself'] = $article ?: []; | ||
|  |         return $res; | ||
|  |     } | ||
|  | } |