DTcms 获取不含子类的文章列表的方法
启航内容管理系统(DTcms)是国内ASP.NET开源界少见的优秀开源网站管理系统,现在已经全面转向ASP.NET CORE升级了。
我有一个网站用的是ASP.NET的版本,目前上线运行平稳运行许久了,出于稳定性考虑,我也就不升级了。
DTcms模板在文章列表页面获取文章列表的标签是
get_article_list(channel,category_id, 100, "status=0")
这里第二个参数是文章分类ID,默认会把指定分类的子类文章一起返回,最近甲方提出需求,要对文章列表页面作出调整,不要将其子类别的文章显示出来,查看了源码,无法通过第四个参数,即自定义SQL条件的方式来实现,只好修改系统源码了,好在修改起来也不难,步骤如下:
1. 在 DTcms.Web.UI - Label - article.cs 中新增一个 get_article_list_not_child 方法,这也是在模板文件中的引用标签,代码如下:
protected DataTable get_article_list_not_child(string channel_name, int category_id, int top, string strwhere) { DataTable dt = new DataTable(); if (!string.IsNullOrEmpty(channel_name)) { dt = new BLL.article().ArticleListNotChild(channel_name, category_id, top, strwhere, "sort_id asc,add_time desc").Tables[0]; } return dt; }
2. 在 DTcms.BLL - article.cs 文件中新增 ArticleListNotChild 方法,代码如下:
public DataSet ArticleListNotChild(string channel_name, int category_id, int Top, string strWhere, string filedOrder) { Dictionary<int, string> dic = new BLL.site_channel().GetListAll(); if (!dic.ContainsValue(channel_name)) { return new DataSet(); } return dal.ArticleListNotChild(channel_name, category_id, Top, strWhere, filedOrder); }
3. 在 DTcms.DAL - article.cs 文件中 新增 ArticleListNotChild 方法,代码如下:
public DataSet ArticleListNotChild(string channel_name, int category_id, int Top, string strWhere, string filedOrder) { Dictionary<int, string> dic = new BLL.site_channel().GetListAll(); if (!dic.ContainsValue(channel_name)) { return new DataSet(); } return dal.ArticleListNotChild(channel_name, category_id, Top, strWhere, filedOrder); }
4. 在DTcms源码解决方案中依次分别对上面修改过的三个项目(DTcms.DAL,DTcms.BLL,DTcms.Web.UI)进行编译生成,编译顺序不能颠倒。
5. 将生成的dll替换部署项目 DTcms.Web 项目下bin文件夹中的对应的三个dll文件(分别是DTcms.DAL.dll,DTcms.BLL.dll和Dtcms.Web.UI.dll)。
6. 修改模板的文章列表文件,在要获取文章列表的地方设置新增的标签即可,配置参数和系统自带的标签一样只是不再将指定类别的子类文章查出来,我这里是获取当前类别下状态是已发布的前100篇文章,标签代码如下:
get_article_list_not_child(channel,category_id, 100, "status=0")
如果有读者朋友在参照该篇文章修改代码时候遇到问题,可以通过电子邮件(邮箱在本博客关于页面)与我联系。
留言评论