如何实现Dedecms中列表页和内容页的子栏目循环功能?
- 行业动态
- 2024-10-17
- 3868
在DedeCMS中,实现列表页/内容页子栏目循环的方法如下:,,“ php,{dede:channel type='son'},[field:typename/],{/dede:channel},“
Dedecms的列表页/内容页子栏目循环 实现方法
在织梦(DedeCMS)系统中,可以使用channelartlist 标签来实现列表页和内容页的子栏目循环,这个标签是 DedeCMS 中唯一一个支持标签嵌套的调用标签,能够有效地展示子栏目及其内容。
参数简介
channelartlist 标签目前支持三个参数:
1、typeid:限制上级栏目ID;可以用0 表示当前栏目,用top 表示顶级栏目,多个栏目可以用逗号分隔。
2、row:循环的栏目数量,默认值为20。
3、cacheid:标签缓存ID,一般为空。
调用实例
在列表页或内容页上使用channelartlist 标签时,需要注意以下几点:
如果typeid 为空,则表示当前栏目,而终极栏目列表和内容页没有下级栏目,会导致调用出错。
在终极列表页或内容页,正确的调用方法应该是以下代码:
<div > {dede:channelartlist typeid='top'} <dl > <dt><strong><a href="{dede:field name='typeurl'/}">{dede:field name='typename'/}</a></strong><span ><a href="{dede:field name='typeurl'/}">更多...</a></span></dt> <dd> <ul > {dede:arclist titlelen='60' row='8'} <li><span>[field:pubdate function="MyDate('md',@me)"/]</span><a href="[field:arcurl /]">[field:title /]</a></li> {/dede:arclist} </ul> </dd> </dl> {/dede:channelartlist} </div>
在这个例子中,typied='top' 可以替换为你想要的上级栏目ID,但绝对不能为空。
栏目高亮与特效调用
在channelartlist 标签下,可以直接使用一些特殊的变量来实现个性化效果,
{dede:field name='typename'/} 和{dede:field name='typeurl'/} 分别用于表示栏目名称和链接。
{dede:field name='id'/} 和{dede:field name='typeid'/} 用于表示循环中的栏目ID。
{dede:global name='itemindex'} 表示循环递增变量,从1开始。
{dede:global name='itemparity'} 表示循环魔法变量,单数为1,双数为2。
这些变量可以帮助你制作各类个性效果,如栏目隔行变色等。
DIY栏目高亮
DedeCMS 的channelartlist.lib.php 文件中并没有自带的栏目高亮功能,但可以通过 DIY 实现:
1、打开channelartlist.lib.php 文件。
2、找到如下代码:
$pv>Fields['typeurl'] = GetOneTypeUrlA($typeids[$i]);
3、在下一行加入以下代码:
if($typeids[$i]['id'] == $refObj>TypeLink>TypeInfos['id']){ $pv>Fields['currentstyle'] = ' id="pic_focus"'; }else{ $pv>Fields['currentstyle'] = ''; }
4、就可以在模板中使用{dede:field name='currentstyle'/} 进行调用了。
相关问答FAQs
Q1: 为什么在列表页或内容页使用channelartlist 标签时会出现调用错误?
A1: 如果在列表页或内容页上直接复制首页的channelartlist 标签代码,而没有设置typeid,就会出现调用错误,因为在channelartlist 标签中,当typeid 为空时,表示的是当前栏目,而终极栏目列表和内容页没有下级栏目,所以会出错,正确的做法是将typeid 设置为top 或其他上级栏目ID。
Q2: 如何在channelartlist 标签中实现栏目的高亮显示?
A2:channelartlist.lib.php 文件中并没有自带栏目高亮功能,需要通过 DIY 实现,打开channelartlist.lib.php 文件,找到如下代码:
$pv>Fields['typeurl'] = GetOneTypeUrlA($typeids[$i]);
在下一行加入以下代码:
if($typeids[$i]['id'] == $refObj>TypeLink>TypeInfos['id']){ $pv>Fields['currentstyle'] = ' id="pic_focus"'; }else{ $pv>Fields['currentstyle'] = ''; }
在模板中使用{dede:field name='currentstyle'/} 进行调用即可。
本站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本站,有问题联系侵删!
本文链接:http://www.xixizhuji.com/fuzhu/160306.html