最近忙于一个项目的开发,找了许多框架,对比之下选择了老猫的CMF,觉得该框架的潜力很大。
而在开发的过程中发现,一级分类下建立了许多子分类子栏目时,后台文章管理无法显示一级分类有任何文章,必须点击选择某个子分类进行搜索才行,这个不利用管理。
所以研究了一阵子,发现只需要修改几句,就可以实现后台文章列表中,一级分类下所有的子分类文章都显示出来。
具体效果如下:
1、一级分类下有许多的子分类
2、即使是选择一级分类,它仍然可以显示它之下的子分类文章列表
通过调试工具可以发现,SQL语句对分类ID的数组进行查询。
3、当选择某一个子分类时,也正常搜索出文章列表。它的SQL语句如下图。
具体实现方法如下:
1、修改\app\portal\service\PostService.php,找到函数 public function adminPostList()
(1)将
$category = empty($filter['category']) ? 0 : intval($filter['category']);
修改为
$category = empty($filter['category']) ? 0 : $filter['category'];
(2)将
$where['b.category_id'] = ['eq', $category];
修改为
if(is_array($category)) {
$where['b.category_id'] = ['in', $category];
}
else{
$where['b.category_id'] = ['eq', $category];
}
2、修改\app\portal\controller\AdminArticleController.php,
(1)在前面namespace下方的use函数库中,随便一行插入use app\portal\service\ApiService;
(2)然后,找到函数public function index()
在$categoryId = $this->request->param('category', 0, 'intval');下方增加以下内容
$cate_api = ApiService::allSubCategories($param['category']);
$subcategories =array();
foreach ($cate_api as $key => $value) {
$subcategories[] = $value['id'];
}
if(!empty($subcategories)){
$param['category'] = array_merge((array)$param['category'],$subcategories);
}
然后将这两个文章上传到网站同样的位置覆盖原文件,即实现一级分类显示子分类的文章列表。
PS:以上仅为技术交流,如有不对,欢迎斧正。
0.话题发布后没及时显示,请联系官方QQ群管理;
1.话题支持代码,qq截屏直接粘贴,和QQ群一样;
2.问题描述清,比如服务器版本,程序版本;
3.能上代码,就不用文字;
4.把问题发到话题后再发QQ群;
5.如果感觉回复者解答的不错,可以发红包!
6.多帮助别人也是对自己的锻炼!
7.付费讨论中只有提问者和付费用户才可以查看回复
1.评论积分+1;每天最多10次奖励
2.发布话题积分+1;每天最多5次奖励
3.垃圾评论积分-500;
4.黄色,暴力,违反我国法律评论直接封号