在织梦CMS(DedeCMS)中,循环调用多级栏目及其内容列表是一个常见的需求,通过使用channelartlist
标签,可以实现这一功能,以下是具体的方法和步骤:
基本用法
1、基本代码示例:
<div> {dede:channelartlist} <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>
2、参数简介:
typeid='0'
:限制上级栏目ID;也可以用top,支持“,”表示多个栏目。
row='20'
:循环的栏目数量,默认为20。
cacheid = ''
:标签缓存ID,一般为空。
调用实例
首页调用子栏目及内容列表
在首页调用时,可以直接使用上述代码,如果需要调用顶级栏目的内容列表,可以将typeid
设置为top
。
终极列表页或内容页调用
在终极列表页或内容页,正确的调用方法应该是以下的:
{dede:channelartlist typeid='top'}
这里的top
值可以换为你想要的上级栏目ID,但绝对是不可以为空的,这个大家一定要注意!
栏目高亮、特效调用
在该标签下,可以直接分别用{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实现栏目高亮
关于这个栏目高亮,在channelartlist.lib.php
并没有自带,但通过以下DIY可实现让当前栏目进行高亮,方法(以dedecms 5.6为例):
打开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'/}
进行调用了。
FAQs
问题1:如何确保在终极列表页或内容页正确调用子栏目及其内容列表?
答:在终极列表页或内容页,正确的调用方法应该是将typeid
设置为top
或者具体的上级栏目ID,而不是空值。
{dede:channelartlist typeid='top'}
这样可以确保正确调用到子栏目及其内容列表。
问题2:如何实现栏目的高亮效果?
答:要实现栏目的高亮效果,可以通过修改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'/}
进行调用即可实现栏目高亮效果。
序号 | 函数/方法 | 描述 | 示例代码 |
1 | {dede:channel type='self' row='10' col='1' } | 用于循环调用当前页面的多级栏目 | {dede:channel type='self' row='10' col='1' }[field:typename/]{/dede:channel} |
2 | {dede:channel type='son' id='当前栏目ID' row='10' col='1' } | 用于循环调用指定栏目的子栏目 | {dede:channel type='son' id='1' row='10' col='1' }[field:typename/]{/dede:channel} |
3 | {dede:arclist typeid='当前栏目ID' row='10' } | 用于循环调用指定栏目的内容列表 | {dede:arclist typeid='1' row='10' }[field:title/]{/dede:arclist} |
4 | {dede:arclist typeid='当前栏目ID' row='10' orderby='pubdate' } | 用于循环调用指定栏目的内容列表,并按发布时间排序 | {dede:arclist typeid='1' row='10' orderby='pubdate' }[field:title/]{/dede:arclist} |
5 | {dede:arclist typeid='当前栏目ID' row='10' flag='h' } | 用于循环调用指定栏目的内容列表,只显示推荐内容 | {dede:arclist typeid='1' row='10' flag='h' }[field:title/]{/dede:arclist} |
6 | {dede:arclist typeid='当前栏目ID' row='10' flag='v' } | 用于循环调用指定栏目的内容列表,只显示视频内容 | {dede:arclist typeid='1' row='10' flag='v' }[field:title/]{/dede:arclist} |
7 | {dede:arclist typeid='当前栏目ID' row='10' flag='p' } | 用于循环调用指定栏目的内容列表,只显示图片内容 | {dede:arclist typeid='1' row='10' flag='p' }[field:title/]{/dede:arclist} |
8 | {dede:arclist typeid='当前栏目ID' row='10' flag='a' } | 用于循环调用指定栏目的内容列表,只显示文章内容 | {dede:arclist typeid='1' row='10' flag='a' }[field:title/]{/dede:arclist} |
9 | {dede:arclist typeid='当前栏目ID' row='10' flag='m' } | 用于循环调用指定栏目的内容列表,只显示模型内容 | {dede:arclist typeid='1' row='10' flag='m' }[field:title/]{/dede:arclist} |
10 | {dede:arclist typeid='当前栏目ID' row='10' flag='c' } | 用于循环调用指定栏目的内容列表,只显示评论内容 | {dede:arclist typeid='1' row='10' flag='c' }[field:title/]{/dede:arclist} |
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1214769.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复