核心标签:{dede:list}
这是列表页调用的核心,所有字段都需要在这个标签的循环体内使用。

基本语法:
{dede:list pagesize='10'}
<!-- 在这里循环调用你需要显示的字段 -->
<li>
<a href="[field:arcurl/]">[field:title/]</a>
<span>[field:pubdate function='MyDate("Y-m-d", @me)'/]</span>
</li>
{/dede:list}
参数说明:
pagesize='10':表示每页显示 10 条数据,你可以根据需要修改这个数字。
常用基本字段调用
这些是文章列表中最常用、最核心的字段。
| 字段名 | 标签写法 | 说明 |
|---|---|---|
[field:title/] |
调用文章标题。 | |
| 文章链接 | [field:arcurl/] |
调用文章的完整访问链接。 |
| 发布时间 | [field:pubdate/] |
调用发布时间,格式为 Unix 时间戳。 |
| 点击数 | [field:click/] |
调用文章的点击次数。 |
| 文章ID | [field:id/] |
调用文章的唯一 ID。 |
| 栏目名称 | [field:typename/] |
调用文章所属栏目的名称。 |
| 栏目链接 | [field:typeurl/] |
调用文章所属栏目的链接。 |
| 文章作者 | [field:writer/] |
调用文章的发布作者。 |
| 文章来源 | [field:source/] |
调用文章的来源。 |
示例代码:

<ul>
{dede:list pagesize='8'}
<li>
<h2><a href="[field:arcurl/]" title="[field:title/]">[field:title/]</a></h2>
<p class="info">
发布时间:[field:pubdate function="MyDate('Y-m-d H:i:s', @me)"] |
来源:[field:source/] |
点击:[field:click/] 次
</p>
<p class="summary">
[field:description/]... <a href="[field:arcurl/]">[查阅全文]</a>
</p>
</li>
{/dede:list}
</ul>
高级字段调用与技巧
很多时候,我们需要调用更复杂或自定义的字段,这时就需要使用一些高级技巧。
调用自定义字段 (附加字段)
如果你的文章模型添加了自定义字段(price, author_intro),调用方法如下:
-
直接调用:
[field:自定义字段名/]自定义字段名为price,则调用[field:price/]。 -
带条件判断调用(如果字段为空则不显示):
{dede:list} <li> [field:title/] <!-- 如果price字段不为空,则显示价格 --> <span> [field:price runphp='yes'] if(@me != '') @me = '价格:' . @me . '元'; else @me = ''; [/field:price] </span> </li> {/dede:list}
使用 function 对字段值进行格式化
这是最常用的高级功能,可以对字段(尤其是时间戳)进行自定义格式化。
-
格式化时间:
MyDate('格式', @me)是织梦内置的时间格式化函数。<!-- 只显示年月日 --> [field:pubdate function='MyDate("Y-m-d", @me)'/] <!-- 显示完整的年月日时分秒 --> [field:pubdate function='MyDate("Y-m-d H:i:s", @me)'/] -
截取文本长度(如摘要):
cn_substr(@me, 长度)是织梦内置的中文截取函数。<!-- 截取摘要前100个字符 --> [field:description function='cn_substr(@me, 100)'/]
-
自定义函数处理: 你可以在
include/extend.func.php文件中自定义 PHP 函数,然后在模板中调用。 在extend.func.php中添加一个函数:function getFirstImg($body) { $preg = "/<img.*?src=[\'|\"](.*?)[\'|\"].*?[\/]?>/i"; preg_match_all($preg, $body, $matches); if (!empty($matches[1][0])) { return $matches[1][0]; } else { return '/images/default.jpg'; // 如果没有图片,返回默认图 } }然后在列表页模板中调用:
{dede:list} <img src="[field:body function='getFirstImg(@me)'/]" alt="[field:title/]"> {/dede:list}
调用文章缩略图
缩略图是一个特殊字段,存储在文章附加表 dede_addonarticle 中,字段名为 litpic。
-
直接调用:
[field:litpic/] -
调用带图片的文章,并为没有图片的文章设置默认图(推荐):
{dede:list} <img src="[field:litpic/]" onerror="this.src='/images/default.jpg'"> {/dede:list}这种方法简单,但如果文章本身没有图,会显示一个 broken link,更优雅的方式是使用
if判断。 -
使用
if判断并设置默认图(推荐):{dede:list} <img src=" [field:litpic runphp='yes'] if(@me == '') @me = '/images/default.jpg'; else @me = @me; [/field:litpic] " alt="[field:title/]"> {/dede:list}
调用子栏目列表
如果你的栏目设置了“是栏目封面”,并且想在列表页显示其下的子栏目,可以使用 列表页下方通常会有分页导航,分页标签 基本语法: 参数说明: 这是一个非常完整的列表页 希望这份详细的指南能帮助你熟练掌握 DedeCMS 列表页的字段调用!{dede:channel}
<h3>子栏目列表</h3>
<ul>
{dede:channel type='son' noself='yes'}
<li>
<a href="[field:typelink/]">[field:typename/]</a>
</li>
{/dede:channel}
</ul>
type='son':表示调用当前栏目的子栏目。noself='yes':表示不调用栏目本身。
分页标签调用
{dede:pagelist} 应该放在 {dede:list} 标签循环体之外。<div class="dede_pages">
<ul class="pagelist">
{dede:pagelist listsize='4' listitem='index,pre,next,end,option'}
{/dede:pagelist}
</ul>
</div>
listsize='4':显示 4 个“...”省略号。listitem='...':定义分页显示哪些项目,可选值有:
index:首页pre:上一页pagelist:页码列表next:下一页end:末页option:跳转下拉框
完整列表页模板示例
list_article.htm 模板示例,包含了上面讲到的各种调用。<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">{dede:field.title/} - {dede:global.cfg_webname/}</title>
<meta name="description" content="{dede:field.description function='html2text(@me)'/}" />
<meta name="keywords" content="{dede:field.keywords/}" />
</head>
<body>
<div class="main">
<!-- 当前栏目名称 -->
<h1>{dede:field.title/}</h1>
<!-- 文章列表 -->
<ul class="article_list">
{dede:list pagesize='10'}
<li>
<!-- 如果文章有缩略图,则显示图片,否则显示默认图 -->
<div class="img">
<a href="[field:arcurl/]" title="[field:title/]">
<img src="
[field:litpic runphp='yes']
if(@me == '') @me = '/images/default.jpg';
else @me = @me;
[/field:litpic]
" alt="[field:title/]">
</a>
</div>
<div class="info">
<h2><a href="[field:arcurl/]" title="[field:title/]" target="_blank">[field:title/]</a></h2>
<p class="desc">[field:description function='cn_substr(@me, 150)'/]...</p>
<div class="meta">
<span>[field:pubdate function='MyDate("Y-m-d", @me)'/]</span>
<span>阅读:[field:click/]</span>
<span>评论:[field:scores/]</span>
</div>
</div>
</li>
{/dede:list}
</ul>
<!-- 分页 -->
<div class="dede_pages">
<ul class="pagelist">
{dede:pagelist listsize='4' listitem='index,pre,next,end,option'}
{/dede:pagelist}
</ul>
</div>
</div>
</body>
</html>
{dede:list},所有列表内容都在这个循环里。[field:字段名/] 直接调用。function='自定义函数' 或 runphp='yes' 来实现,特别是时间格式化和条件判断。{dede:pagelist},放在列表循环外面。extend.func.php 可以极大地扩展模板的灵活性。
