转载自: 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");
改完后样式效果出来了: