building-sign/app/traits/cms/ArticleTrait.php

59 lines
1.6 KiB
PHP
Executable File

<?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;
}
}