{dede:arclist}
{dede:arclist} 是 DedeCMS 中最强大、最灵活的列表调用标签,专门用于获取文章(新闻)列表。

(图片来源网络,侵删)
基本语法和参数
要在指定分类下调用新闻,你需要使用 typeid 这个核心参数。
{dede:arclist typeid='分类ID' titlelen='40' row='10'}
<li>
<a href="[field:arcurl/]">[field:title/]</a>
<span>[field:pubdate function="MyDate('Y-m-d', @me)"/]</span>
</li>
{/dede:arclist}
关键参数详解
a. typeid (必须参数)
- 作用:指定要调用的新闻分类的 ID。
- 如何获取分类 ID?
- 登录你的 DedeCMS 后台。
- 进入「核心」 -> 「内容频道管理」 -> 「内容栏目管理」。
- 找到你想要调用的那个分类,将鼠标悬停在该分类名称上,浏览器左下角会显示链接,
.../catalog_add.php?cid=123,123就是这个分类的 ID。
- 用法:
typeid='123':调用单个分类 ID 为 123 的新闻。typeid='123,456,789':同时调用多个分类 ID 的新闻,用英文逗号隔开。typeid='top':调用顶级栏目(所有一级分类)下的新闻。typeid='sonof123':调用分类 ID 为 123 的所有子分类下的新闻。
b. row (可选参数)
- 作用:指定调用多少条新闻。
- 用法:
row='10':调用 10 条新闻。row='0'或不写此参数:调用该分类下所有符合条件的新闻。
c. titlelen (可选参数)
- 作用:设置新闻标题的显示字数。
- 用法:
titlelen='30'最多显示 30 个汉字(一个汉字算一个字符,一个字母也算一个字符)。
d. infolen (可选参数)
- 作用:设置新闻内容简介(的显示字数。
- 用法:
infolen='100':摘要显示 100 个字符。
- 注意:这个字段需要你在后台发布新闻时填写“内容,否则可能为空。
e. orderby (可选参数)
- 作用:设置新闻的排序方式。
- 常用值:
orderby='pubdate':按发布时间倒序排列(默认)。orderby='hot'或orderby='click':按点击量(人气)从高到低排序。orderby='sortrank':按后台设置的“文章排序值”排序。orderby='id':按文章 ID 倒序排列。
f. channelid (可选参数)
- 作用模型 ID。
- 默认值:
1,代表“普通文章”模型,如果你有其他模型(如产品、下载等),需要填写对应的模型 ID。
完整示例
假设你要调用一个 ID 为 5 的分类下的新闻,标题显示 30 个字,共显示 10 条,并按发布时间排序。
HTML 模板代码
<h2>公司新闻</h2>
<ul class="news-list">
{dede:arclist typeid='5' titlelen='30' row='10' orderby='pubdate'}
<li>
<!-- [field:title/] 是文章标题 -->
<a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a>
<!-- [field:pubdate/] 是发布时间,我们使用 function 来格式化日期 -->
<span class="date">[field:pubdate function="MyDate('Y-m-d', @me)"/]</span>
</li>
{/dede:arclist}
</ul>
各个字段说明
| 字段标签 | 说明 |
|---|---|
[field:title/] |
|
[field:arcurl/] |
文章链接 |
[field:pubdate/] |
发布时间(时间戳格式) |
[field:description/] |
需要在后台填写) |
[field:litpic/] |
文章缩略图 |
[field:click/] |
文章点击量 |
[field:id/] |
文章 ID |
常见问题与解决方案
问题1:为什么调用出来的列表是空的?
- 原因1:
typeid写错了,请务必去后台核对分类 ID。 - 原因2:该分类下还没有发布任何文章。
- 原因3:该分类被设置为“外部链接”或“单页文档”,而不是“栏目”。
- 原因4:权限问题,如果使用了会员模型,可能是栏目权限设置导致游客无法查看。
问题2:如何只显示有缩略图的文章?
可以使用 litpic='default' 参数,并配合 idlist 等方法,但更简单的方式是使用 addfields 和 channelid 结合查询数据库,一个更简单直观的模板判断方法是:
{dede:arclist typeid='5' row='10'}
<li>
<!-- 使用 runphp='yes' 进行条件判断 -->
[field:litpic runphp='yes']
if(@me == '') {
@me = '<img src="/images/default-thumbnail.jpg" alt="无图"/>'; // 无图时显示的默认图片
} else {
@me = '<img src="' . @me . '" alt="[field:title/]"/>'; // 有图则显示原图
}
[/field:litpic]
<a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a>
</li>
{/dede:arclist}
问题3:如何调用子分类及其下的文章?
- 方法A (只调用子分类下的文章):
{dede:arctype typeid='5'} <!-- 假设5是父分类ID --> {dede:channel type='son' noself='yes'} <h3><a href="[field:typelink/]">[field:typename/]</a></h3> <ul> {dede:arclist typeid='[field:id/]' row='5'} <li><a href="[field:arcurl/]">[field:title/]</a></li> {/dede:arclist} </ul> {/dede:channel} {/dede:arctype} - 方法B (调用父分类和所有子分类下的文章):
{dede:arclist typeid='5,sonof5' row='20'} <!-- ... --> {/dede:arclist}
调用指定分类下的新闻,记住核心公式:

(图片来源网络,侵删)
{dede:arclist typeid='你的分类ID' 其他参数...}
typeid是灵魂,决定了数据来源。row、titlelen、orderby等是辅助,决定了如何展示数据。[field:xxx]是数据的呈现方式。
希望这份详细的指南能帮助你解决问题!如果还有其他疑问,欢迎随时提问。

(图片来源网络,侵删)
