栏目单独页
在 DedeCMS 中,当你创建一个栏目时,可以为其选择一种“列表类型”:

(图片来源网络,侵删)
- 普通栏目:其列表页就是标准的栏目单独页,显示该栏目下的文章列表。
- 封面栏目:其列表页更像一个单页,可以用来展示栏目介绍、图片等静态内容,不显示文章列表。
- 外部链接:点击直接跳转到指定的外部URL。
我们通常所说的“栏目单独页标签”,主要指的就是普通栏目列表页所使用的模板文件 list_article.htm 中的标签。
最核心的列表循环标签
这是栏目页的灵魂,用于循环输出该栏目下的所有文章(或文档)。
{dede:arclist}
<!-- 循环体内的HTML和标签 -->
<li>
<a href="[field:arcurl/]">[field:title/]</a>
<span>[field:pubdate function="MyDate('Y-m-d', @me)"/]</span>
</li>
{/dede:arclist}
标签解析:
{dede:arclist}和{/dede:arclist}:这是循环的开始和结束标签。[field:字段名/]:这是在循环内部获取当前文章(循环项)特定信息的标签。[field:title/]。[field:arcurl/]:文章的完整链接地址。[field:pubdate/]:文章的发布时间(默认是时间戳格式)。[field:description/]:[field:litpic/]:文章的缩略图。[field:click/]:文章的点击量。[field:source/]:文章来源。[field:writer/]:文章作者。
{dede:arclist} 常用属性:

(图片来源网络,侵删)
typeid: 最重要的属性,指定要获取哪个栏目下的文章,如果留空,默认获取当前栏目(在列表页模板中,通常不需要填写,它会自动识别)。row: 显示文章的数量,row='10'表示显示10篇文章,len标题长度,例如titlelen='30'` 表示标题最多显示30个字符。infolen: 摘要长度,infolen='100'表示摘要最多显示100个字符。orderby: 排序方式,常用值有:sortrank(默认):按文章排序级别(后台设置)排序。pubdate:按发布时间排序。click:按点击量排序。
orderway: 排序方向,desc(降序,默认) 或asc(升序)。channelid: 频道ID,默认为1(文章模型),如果使用了其他模型,需要指定。
示例:获取当前栏目下10篇按发布时间倒序排列的文章,标题显示20个字符。
{dede:arclist row='10' titlelen='20' orderby='pubdate' orderway='desc'}
<li>
<a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a>
<span>[field:pubdate function="MyDate('Y-m-d', @me)"]</span>
</li>
{/dede:arclist}
分页标签
当栏目下的文章数量超过 arclist 的 row 值时,就需要分页。
<div class="dede_pages">
<ul class="pagelist">
{dede:pagelist listsize='4' listitem='index,pre,next,end,option'}
{/dede:pagelist}
</ul>
</div>
标签解析:
{dede:pagelist}:分页功能标签。listsize: 显示的页码按钮数量,listsize='4'会显示... 2 3 4 5 6 ...这样的样式。listitem: 定义分页条显示哪些元素,常用的有:index: 首页pre: 上一页next: 下一页end: 末页option: 下拉跳转页框option(小写) 是一个更简洁的下拉框。
栏目本身信息标签
这些标签用于获取当前栏目页本身的信息,通常放在页面顶部,用于显示栏目名称、描述等。

(图片来源网络,侵删)
<h1>{dede:field.typename/}</h1>
<p>{dede:field.description/}</p>
常用标签:
{dede:field.seotitle/}:栏目SEO标题。{dede:field.typename/}:栏目名称。{dede:field.description/}:栏目描述。{dede:field.keyword/}:栏目关键词。
完整示例:一个典型的栏目列表页 list_article.htm
下面是一个完整的、常见的栏目列表页模板代码,包含了上述所有核心标签。
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">{dede:field.seotitle/}_{dede:global.cfg_webname/}</title>
<meta name="keywords" content="{dede:field.keyword/}" />
<meta name="description" content="{dede:field.description/}" />
</head>
<body>
<div class="main">
<!-- 1. 栏目名称和描述 -->
<h1>{dede:field.typename/}</h1>
<div class="description">{dede:field.description/}</div>
<!-- 2. 文章列表 -->
<ul class="article_list">
{dede:arclist row='20' titlelen='40' orderby='pubdate' orderway='desc'}
<li>
<!-- 如果有缩略图则显示缩略图,否则显示默认图或文字 -->
[field:litpic runphp='yes']
if(@me=='') @me = '<img src="/images/default.jpg" />';
else @me = '<img src="'.@me.'" />';
[/field:litpic]
<div class="info">
<a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a>
<p>[field:description function="cn_substr(@me, 150)"]...</p>
<span class="meta">发布时间:[field:pubdate function="MyDate('Y-m-d H:i', @me)"] 点击:[field:click/]</span>
</div>
</li>
{/dede:arclist}
</ul>
<!-- 3. 分页 -->
<div class="dede_pages">
<ul class="pagelist">
{dede:pagelist listsize='4' listitem='index,pre,next,end,option'}
{/dede:pagelist}
</ul>
</div>
</div>
</body>
</html>
进阶与技巧
-
调用子栏目的文章 如果你想在栏目页同时显示当前栏目的文章和其子栏目的文章,可以在
arclist标签中使用sonlevel属性。{dede:arclist typeid='当前栏目ID' row='10' sonlevel='1'} <!-- 循环内容 --> {/dede:arclist}typeid必须填写当前栏目的ID(可以在后台栏目管理中查看)。sonlevel='1'表示调用子栏目(一级)下的文章。
-
自定义函数 在示例中,我们使用了
function="MyDate('Y-m-d', @me)"和function="cn_substr(@me, 150)"。MyDate: DedeCMS 内置的日期格式化函数。cn_substr: DedeCMS 内置的中文截取函数,防止英文截断产生乱码。runphp='yes': 允许在标签内执行PHP代码,非常灵活。
-
栏目封面页的特殊性 如果你的栏目类型是“封面栏目”,
list_article.htm模板中的{dede:arclist}是无效的,封面页的内容应该像普通页面一样,直接使用静态HTML和{dede:field.xxx/}来调用栏目的基本信息。
希望这份详细的解析能帮助你完全掌握 DedeCMS 栏目单独页的标签使用!
