找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 522|回复: 0

织梦DEDECMS网站内页子栏目循环currentstyle的实现方法

[复制链接]
发表于 2012-4-18 10:46:16 | 显示全部楼层 |阅读模式
我们大家都知道,在织梦模板系统中,可以用channelartlist标签进行循环子栏目及其栏目的文档数据,这也是织梦dedecms系统中,唯一一个支持标签嵌套的调用标签,以DedeV5.6新版举例,他的基本调用方法为:

{dede:channelartlist}
      
        {dede:field name='typename'/}更多...
        
         
          {dede:arclist titlelen='60' row='8'}
            [field:pubdate function="MyDate('m-d',@me)"/][field:title /]
          {/dede:arclist}
         
        
      
{/dede:channelartlist}
   
以上标签来源于DedeCMS V5.6 默认首页模板;
至于该标签的具体含义这里不再一一熬述,我们重点讲解在列表页/内容页的具体使用;
(一)参数简介
channelartlist标签暂时支持三个参数,分别为:
typeid='0' 限制上级栏目ID;也可以用top,支持“,”表示多个栏目
row='20' 循环的栏目数量,默认为20;
cacheid = '' 标签缓存ID,一般为空
这个需要特别说明一下,很多人,经常将上诉标签支持复制到终极栏目页或内容页,很遗憾的是不会出现任何调用结果。因为这里大家可能受到了官方帮助文档不足所带来的遗憾,因为在这个标签中,当typeid为空,那么则表示当前栏目,但是终极栏目列表和内容页是没有下级栏目的,所以这里就会出错!

                                    
         
(二)调用实例
在终极列表页或内容页,正确的调用方法应该是以下的:
   
{dede:channelartlist typeid='top'}     
         
       {dede:field name='typename'/}更多...   
           
            
         {dede:arclist titlelen='60' row='8'}     
           [field:pubdate function="MyDate('m-d',@me)"/][field:title /]   
         {/dede:arclist}     
            
           
         
{/dede:channelartlist}     
   
这里是typied='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;
以上就是可以在channelartlist中直接套用的,特别要注意的是第2个与第三个;拥有这两个变量,可以轻松制作出各类非常个性的效果,例如栏目的隔行变色等;
关于这个栏目高亮,在channelartlist.lib.php虽然系统并没有自带,但我们可以自行制作,让当前栏目进行高亮。
制作方法:
打开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'/}进行调用了。
效果预览
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|要学吧论坛

GMT+8, 2026-1-24 01:14 , Processed in 0.034775 second(s), 22 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表