您的位置:首页 > 其它

dedeCMS中的标签"channelartlist” 来获得频道的下级栏目的内容列表

2012-08-14 21:07 671 查看
转载自: http://help.dedecms.com/manual/tagmanual/DedeTagmanual_Finnal/channelartlist.htm

一、官方介绍

标签名称:channelartlist

标记简介:

功能说明:
获取当前频道的下级栏目的内容列表标签

适用范围:
全局使用

基本语法:

{dede:channelartlist row=6}
<dl>
<dt><a href='{dede:field name='typeurl'/}'>{dede:field name='typename'/}</a></dt>
<dd>
{dede:arclist titlelen='42' row='10'}    <ul class='autod'>
<li><a href="[field:arcurl /]">[field:title /]</a></li>
<li>([field:pubdate function="MyDate('m-d',@me)"/])</li>
</ul>
{/dede:arclist}
</dl>
{/dede:channelartlist}


相关函数:

文件\include\taglib\channelartlist.lib.php第6行

function lib_channelartlist(&$ctag,&$refObj)


function lib_channelartlist(&$ctag,&$refObj){
global $dsql,$envs,$_sys_globals;

//处理标记属性、innertext
$attlist = 'typeid|0,row|20,cacheid|';
FillAttsDefault($ctag->CAttribute->Items,$attlist);
extract($ctag->CAttribute->Items, EXTR_SKIP);
$innertext = trim($ctag->GetInnerText());
$artlist = '';
//读取固定的缓存块
$cacheid = trim($cacheid);
if($cacheid !='') {
$artlist = GetCacheBlock($cacheid);
if($artlist!='') return $artlist;
}


参数说明:

如以上代码所示:

typeid = '0' 频道ID,多个请用","分开,如果调用1个栏目可以使用typeid='5,0'来调用。

分隔 row = '20' 获取的栏目返回值 其他说明: 除了宏标记外,channelArtlist 是唯一一个可以直接嵌套其它标记的标记,不过仅限于嵌套 {dede:type}{/dede:type} 和 {dede:arclist}{/dede:arclist} 两个标记。

底层模板变量:

包含{dede:type}{/dede:type}及{dede:arclist}{/dede:arclist}下面所有底层模板变量。

使用实例:

这个标签是系统中不多的一个支持嵌套的标签,这个标签通常使用在首页(含封面首页),用于输出一组栏目内容列表,我们可以看到默认模板首页:



这部分的内容就是通过这个标签进行显示的,我们可以查看首页模板\templets\default\index.htm120行

{dede:channelartlist}
<dl class="tbox">
<dt><strong><a href="{dede:field name='typeurl'/}">{dede:field name='typename'/}</a></strong><span class="more"><a href="{dede:field name='typeurl'/}">更多...</a></span></dt>
<dd>
<ul class="d1 ico3">
{dede:arclist titlelen='60' row='8'}
<li><span class="date">[field:pubdate function="MyDate('m-d',@me)"/]</span><a href="[field:arcurl /]">[field:title /]</a></li>
{/dede:arclist}
</ul>
</dd>
</dl>
{/dede:channelartlist}


二、实践当中遇到的问题及解决方法

1、遇到的问题
在一个模板上去加入上面讲到的index.htm 120行代码,也确实出现栏目文章列表,但文章是直接列出来的,并没有样式:



2、解决方法
在加入的代码中控制样式的有两个:

(1)<div class="listbox">

我们在模板中所有样式控制的css文件夹中(templets\default\style\)找到:

.index .listbox{
width:720px;
overflow:hidden;
float:left;
clear:both;
overflow:hidden;
}


.index .listbox ul a{
color:#666;
}


从以上看,它只是控制布局及边框大小,颜色而已。

(2) <dl class="tbox">

这个才是控制存放文章列表的小框样式的,

我们在模板中所有样式控制的css文件夹中(templets\default\style\)找到它存在多个文件中:

(2、1)在dedecms_skin_1.css中有

.tbox{
background:url(../images/blue_skin.png) 0 -294px repeat-x;
border-bottom:1px solid #BFD2E1;
}


.tbox dt{
border:1px solid #BFD2E1;
}

(2、2)在dedecms_skin_2.css中有

.tbox{
background:url(../images/red_skin.png) 0 -294px repeat-x;
border-bottom:1px solid #e8ceae;
}

(2、3)在dedecms_skin_3.css中、在dedecms_skin_2.css中、在dedecms_skin_5.css中

(2、4)在layout.css中

.tbox{
margin:0 0 8px 0;
border-bottom:1px solid #BADAA1;
overflow:hidden;
background:url(../images/green_skin.png) 0 -294px repeat-x;
}


从以上看出控制样式.tbox定义的文件是存在的,那么为什么没有样式效果呢?

原来是在index.htm中没有把样式的css文件加入,解决方法就是加入css文件;我选择加入dedecms.css,因为在dedecms.css中有:

/***
*	DedeCMS v5.6 Style (Default Style)
*	dedecms.com  Author Networker  2010.02.05
**/

/*---------- import ---------*/
@import url("layout.css");
@import url("page.css");
@import url("286admin.css");




改完后样式效果出来了:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: