如何在织梦CMS中使用dede:artlist标签的notypeid属性来过滤栏目内容?
- 行业动态
- 2024-10-02
- 1
{dede:artlist}
标签增加
notypeid
属性,可以实现对栏目的过滤。
在织梦CMS(DedeCMS)中,dede:artlist
标签是一个非常常用的标签,用于在模板中调用文章列表,有时候我们可能会遇到需要排除某些特定栏目的需求,这时候就需要对标签进行扩展和自定义,本文将详细介绍如何在dede:artlist
标签中增加notypeid
属性来实现栏目过滤的功能。
修改源码
1、打开文件:找到并打开/include/taglib/arclist.lib.php
文件。
2、修改函数返回值:
在第130行左右的位置,找到以下代码:
“`php
return lib_arclistDone(
$refObj, $ctag, $typeid, $ctag>GetAtt(‘row’), $ctag>GetAtt(‘col’), $titlelen, $infolen,
$ctag>GetAtt(‘imgwidth’), $ctag>GetAtt(‘imgheight’), $listtype, $orderby,
$ctag>GetAtt(‘keyword’), $innertext, $envs[‘aid’], $ctag>GetAtt(‘idlist’), $channelid,
$ctag>GetAtt(‘limit’), $flag,$ctag>GetAtt(‘orderway’), $ctag>GetAtt(‘subday’), $ctag>GetAtt(‘noflag’),
$tagid,$pagesize,$isweight
);
“`
在最后括号的最后加上$ctag>GetAtt('notypeid')
:
“`php
return lib_arclistDone(
// … (其他参数)
$ctag>GetAtt(‘noflag’),
$tagid,$pagesize,$isweight,$ctag>GetAtt(‘notypeid’)
);
“`
3、修改函数定义:
在第168行左右的位置,找到以下代码:
“`php
function lib_arclistDone(&$refObj, &$ctag, $typeid=0, $row=10, $col=1, $titlelen=30, $infolen=160,
$imgwidth=120, $imgheight=90, $listtype=’all’, $orderby=’default’, $keyword=”,
$innertext=”, $arcid=0, $idlist=”, $channelid=0, $limit=”, $att=”, $order=’desc’, $subday=0, $noflag=”,$tagid=”, $pagesize=0, $isweight=’N’) {
// … (函数内容)
}
“`
在括号的最后加上$notypeid=0
:
“`php
function lib_arclistDone(&$refObj, &$ctag, $typeid=0, $row=10, $col=1, $titlelen=30, $infolen=160,
$imgwidth=120, $imgheight=90, $listtype=’all’, $orderby=’default’, $keyword=”,
$innertext=”, $arcid=0, $idlist=”, $channelid=0, $limit=”, $att=”, $order=’desc’, $subday=0, $noflag=”,$tagid=”, $pagesize=0, $isweight=’N’, $notypeid=0) {
// … (函数内容)
}
“`
4、添加条件语句:
在同一文件中,找到以下代码:
“`php
$orwheres[] = ‘ arc.arcrank > 1 ‘;
“`
在这行代码之前添加:
“`php
if (!empty($notypeid)) {
$orwheres[] = " and arc.typeid NOT IN (" . GetSonIds($notypeid) . ")";
}
“`
5、保存文件:完成以上修改后,保存文件。
使用方法
在模板文件中使用dede:arclist
标签时,可以通过新增的notypeid
属性来排除不需要显示的栏目。
{dede:arclist row='6' orderby='pubdate' type='image.' imgwidth='108' imgheight='150' channelid='1' notypeid='9'}
在这个示例中,notypeid='9'
表示排除ID为9的栏目及其子栏目。
相关问答FAQs
问题1:如何确保修改后的代码生效?
解答1:确保你的修改已经正确保存,并且服务器上的缓存已经被清除,你可以尝试刷新页面或者重启服务器以确保修改生效,如果仍然不起作用,请检查代码是否有语法错误或遗漏的地方。
问题2:是否可以同时使用typeid
和notypeid
属性?
解答2:可以的,typeid
和notypeid
属性是可以同时使用的。typeid
用于指定要显示的栏目ID,而notypeid
用于排除特定的栏目ID,这样你可以更灵活地控制文章列表的显示内容。
{dede:arclist row='6' orderby='pubdate' type='image.' imgwidth='108' imgheight='150' channelid='1' typeid='2,3,4' notypeid='9'}
在这个示例中,会显示ID为2、3、4的栏目的文章,但排除ID为9的栏目及其子栏目的文章。
“`html
织梦CMS {dede:artlist} 标签使用 notypeid 属性实现栏目过滤示例织梦CMS {dede:artlist} 标签增加 notypeid 属性实现栏目过滤
以下是一个使用 {dede:artlist} 标签并增加 notypeid 属性来过滤特定栏目的示例代码。
{dede:artlist typeid='1' notypeid='2,3,4' flag='h'}
{/dede:artlist}
代码说明:
{dede:artlist}
:这是织梦CMS中用于列出文章列表的标签。typeid='1'
:指定要显示的文章属于哪个栏目,我们指定显示栏目ID为1的文章。notypeid='2,3,4'
:这是新增的属性,用于排除特定栏目ID的文章,我们排除了栏目ID为2、3、4的文章。flag='h'
:这是一个可选的属性,用于指定文章列表的显示格式,我们使用“h”表示以列表形式显示。[field:arcurl/]
:这是动态获取文章URL的标签。[field:title/]
:这是动态获取文章标题的标签。
通过这种方式,您可以轻松地使用织梦CMS的 {dede:artlist} 标签来实现对特定栏目的过滤。
“`
本站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本站,有问题联系侵删!
本文链接:http://www.xixizhuji.com/fuzhu/97656.html