下面我将从基础调用、常用高级调用、SQL自由调用以及调用性能优化四个方面进行详细说明。

(图片来源网络,侵删)
基础调用:最常用的文章列表
这是最常见的需求,比如在首页、栏目页调用指定栏目或全站的文章列表。
全站最新文章调用
调用全站最新发布的文章,不限栏目。
{dede:arclist row='10' titlelen='30'}
<li>
<a href="[field:arcurl/]">[field:title/]</a>
<span>[field:pubdate function="MyDate('Y-m-d', @me)"/]</span>
</li>
{/dede:arclist}
参数说明:
row='10':调用10条记录,len='30'`:标题长度,最多显示30个字符(一个汉字算2个字符)。[field:arcurl/]:文章的链接地址。[field:title/]:文章的标题。[field:pubdate function="MyDate('Y-m-d', @me)"/]:文章发布日期,function="MyDate('Y-m-d', @me)"是一个函数,用于将时间戳格式化为年-月-日的格式。
指定栏目文章调用
调用某个特定栏目(或多个栏目)下的文章。

(图片来源网络,侵删)
{dede:arclist row='8' titlelen='24' typeid='2,5,8'}
<li>
<a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a>
</li>
{/dede:arclist}
新增参数:
typeid='2,5,8':指定要调用的栏目ID,多个ID用英文逗号隔开,如果留空,则调用所有栏目的文章(即全站调用)。
带缩略图的文章调用
这是非常实用的一个功能,可以调用文章的缩略图。
{dede:arclist row='6' titlelen='20' typeid='2' imgwidth='150' imgheight='100'}
<li>
<a href="[field:arcurl/]">
<img src="[field:picname/]" alt="[field:title/]" width="150" height="100" />
<span>[field:title/]</span>
</a>
</li>
{/dede:arclist}
新增参数:
imgwidth='150':缩略图宽度。imgheight='100':缩略图高度。[field:picname/]:文章缩略图的地址。
注意: 文章需要有缩略图才能显示,如果某些文章没有缩略图,可以使用 if 条件语句进行判断,或者使用 default 属性设置一个默认图片。

(图片来源网络,侵删)
带摘要(简介)的文章调用
{dede:arclist row='5' typeid='3' titlelen='26' infolen='100'}
<li>
<a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a>
<p>[field:description function='cn_substr(@me, 100)'/]</p>
</li>
{/dede:arclist}
新增参数/用法:
infolen='100':指定摘要的长度(字符数)。[field:description/]:文章的摘要内容。function='cn_substr(@me, 100)':同样是一个函数,用于截取摘要的前100个字符,防止过长。
常用高级调用
调用带图的文章列表(带判断)
这个模板可以更智能地处理没有缩略图的文章,如果有图则显示图,没有图则只显示标题。
{dede:arclist row='4' typeid='5' titlelen='30'}
<li>
[field:array runphp='yes']
if(@me['litpic'] != "" && @me['litpic'] != "/images/defaultpic.gif"){
@me = '<a href="'.@me['arcurl'].'" title="'.@me['title'].'"><img src="'.@me['litpic'].'" alt="'.@me['title'].'" /></a>';
} else {
@me = '';
}
[/field:array]
<a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a>
</li>
{/dede:arclist}
说明:
[field:array runphp='yes']:将当前文章的所有信息(如标题、链接、缩略图等)以数组形式取出,并通过runphp='yes'执行PHP代码。if(@me['litpic'] != "" && @me['litpic'] != "/images/defaultpic.gif"):判断缩略图字段litpic是否为空,并且不是默认的占位图。@me = '...':如果条件成立,则将整个<a><img>标签字符串赋值给@me,最终在模板中输出。@me = '':如果条件不成立,则赋值为空,不显示图片。
调用指定时间范围内的文章
调用最近7天发布的文章。
{dede:arclist row='10' titlelen='40' subday='7'}
<li><a href="[field:arcurl/]">[field:title/]</a></li>
{/dede:arclist}
参数说明:
subday='7':调用发布时间在7天内的文章。
调用热门文章(按点击量)
调用点击量最高的文章。
{dede:arclist row='10' titlelen='30' orderby='click'}
<li><a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a> ([field:click/])</li>
{/dede:arclist}
参数说明:
orderby='click':按点击量(click)字段排序。[field:click/]:显示文章的点击量。
SQL自由调用(最灵活)
当 {dede:arclist} 无法满足复杂需求时,可以使用 {dede:sql} 标签直接执行SQL语句。
基本语法:
{dede:sql sql='SELECT * FROM `dede_archives` WHERE typeid = 2 LIMIT 0, 10'}
<li>
<a href="/plus/view.php?aid=[field:id/]">[field:title/]</a>
</li>
{/dede:sql}
说明:
sql='...':在这里写你的SQL查询语句。- 注意表前缀:如果你的数据表前缀不是默认的
dede_,需要修改成你的实际前缀。 - 注意字段:
[field:id/]对应的是dede_archives表中的id字段,[field:title/]对应的是title字段。 - 链接地址:使用
/plus/view.php?aid=[field:id/]来构造文章链接。
高级SQL调用示例:
调用指定栏目及其所有子栏目下的文章(需要用到SQL的 IN 语句和织梦的 GetSonIds 函数)。
{dede:sql sql='SELECT a.id, a.title, a.typeid, a.litpic, c.typename FROM `dede_archives` a LEFT JOIN `dede_arctype` c ON a.typeid = c.id WHERE a.typeid IN (~GetSonIds(@me,2)~) AND a.arcrank > -1 ORDER BY a.pubdate DESC LIMIT 0, 5'}
<li>
<a href="/plus/view.php?aid=[field:id/]" title="[field:title/]">[field:title/]</a>
<span>栏目:[field:typename/]</span>
</li>
{/dede:sql}
说明:
~GetSonIds(@me,2)~:这是织梦的函数,它会获取ID为2的栏目及其所有子栏目的ID,并替换成IN (2,5,8,...)这样的格式。LEFT JOIN:通过左连接dede_arctype表,可以直接获取到文章的栏目名称typename。a.arcrank > -1:这是一个常用条件,表示只调用已审核通过的文章(arcrank = -1为未审核或待审核)。
调用性能优化建议
- 尽量使用
typeid:如果可能,尽量给arclist指定typeid,这能让织梦的缓存机制更高效,减少数据库查询压力。 - 减少调用数量:不要在一个页面上调用过多文章列表,
row='50',这会严重影响页面加载速度。 - 善用缓存:织梦默认对
arclist有缓存,在后台“系统” -> “SQL命令行工具”中,可以执行DedeCache相关命令来清理缓存,或者在修改模板后手动更新首页。 - 避免复杂SQL:虽然
{dede:sql}很灵活,但如果SQL语句过于复杂或频繁调用,也会拖慢网站速度,对于常用且复杂的调用,建议直接修改织梦的核心文件来生成一个专门的标签(这需要一定的PHP开发能力)。
希望这份详细的指南能帮助你在织梦5.7中自如地调用文章!如果你有更具体的需求,可以随时提问。
