核心概念:发布时间字段
织梦CMS的文章发布时间存储在数据库的 dede_archives 表中,字段名为 pubdate,它是一个 Unix 时间戳(从1970年1月1日开始的秒数),在模板调用时,织梦会自动将其转换为你设定的格式。

(图片来源网络,侵删)
在文章列表页添加/修改发布时间
这通常指的是首页、栏目页、搜索结果页等展示文章摘要的地方,操作的核心是修改对应的模板文件。
步骤 1:找到并打开模板文件
你需要根据修改的位置找到对应的模板文件:
- 网站首页:模板文件通常是
/templets/default/index.htm - 栏目页:模板文件通常是
/templets/default/list_artlist.htm或/templets/你的栏目目录/list_栏目ID.htm - 文章列表(如文章频道):模板文件通常是
/templets/default/article_list.htm
提示:
/templets/default/是默认模板目录,如果你使用了其他模板,请替换成你自己的模板目录。
步骤 2:在模板中添加发布时间调用代码
在列表循环代码(通常是 {dede:arclist} 或 {dede:list} 标签)内部,你希望显示时间的位置,加入以下代码:

(图片来源网络,侵删)
[field:pubdate function='strftime("%Y-%m-%d %H:%M:%S",@me)'/]
代码解析:
[field:pubdate ... /]:这是调用文章的pubdate字段。function='...':表示对字段值进行函数处理。strftime:是PHP中一个强大的时间格式化函数。"%Y-%m-%d %H:%M:%S":这是格式化字符串,你可以自由修改:%Y:四位数的年份(如 2025)%m:两位数的月份(如 01, 02, ..., 12)%d:两位数的日期(如 01, 02, ..., 31)%H:24小时制的小时(如 00, 01, ..., 23)%M:分钟(如 00, 01, ..., 59)%S:秒(如 00, 01, ..., 59)- 你也可以使用其他格式,
"%Y年%m月%d日"->2025年10月27日"%m-%d"->10-27"%Y/%m/%d %H:%M"->2025/10/27 15:30
完整示例
假设你想在首页文章列表的标题下方显示发布时间,可以这样做:
- 打开
/templets/default/index.htm。 - 找到文章列表循环部分,代码类似这样:
{dede:arclist titlelen='30' row='10'} <li> <a href="[field:arcurl/]">[field:title/]</a> <!-- 在这里添加发布时间 --> </li> {/dede:arclist} - 在
<a>标签后添加时间调用代码:{dede:arclist titlelen='30' row='10'} <li> <a href="[field:arcurl/]">[field:title/]</a> <span class="time">[field:pubdate function='strftime("%Y-%m-%d",@me)'/]</span> </li> {/dede:arclist} - 为了让时间样式更好看,你可以在CSS文件中(如
/templets/default/style/dedecms.css)添加:.time { color: #999; font-size: 12px; margin-left: 10px; }
页添加/修改发布时间
页的模板文件通常是 /templets/default/article_article.htm。
步骤 1:打开内容页模板文件
找到并打开 /templets/default/article_article.htm。

(图片来源网络,侵删)
步骤 2:添加发布时间调用代码
作者等信息旁边,添加调用代码,通常使用 {dede:field} 标签来调用文章的单个字段。
<span>发布时间:{dede:field.pubdate function='strftime("%Y-%m-%d %H:%M",@me)'/}</span>
代码解析:
{dede:field.pubdate ... /}:这是调用文章内容页的pubdate字段的一种方式,比[field:pubdate]更明确。- 同样,
function='strftime(...)'用于格式化时间。
完整示例
在 article_article.htm 中,你可能找到类似这样的代码:
<h1 class="title">{dede:field.title/}</h1>
<div class="info">
<span>作者:{dede:field.writer/}</span>
<span>来源:{dede:field.source/}</span>
<!-- 在这里添加发布时间 -->
</div>
你可以将其修改为:
<h1 class="title">{dede:field.title/}</h1>
<div class="info">
<span>作者:{dede:field.writer/}</span>
<span>来源:{dede:field.source/}</span>
<span>发布时间:{dede:field.pubdate function='strftime("%Y-%m-%d %H:%M",@me)'/}</span>
<span>点击:{dede:field.click/}</span>
</div>
在后台发布/编辑文章时查看和修改发布时间
虽然模板控制了显示格式,但发布时间的“值”是在后台添加文章时确定的。
-
登录织梦CMS后台。
-
进入“[核心]” -> “[内容发布]” -> “[添加文档]” 或 “[编辑文档]”。
-
在文章编辑界面,你会看到“发布时间”这一项。
- 它通常默认显示为当前时间。
- 你可以点击输入框,通过日期时间选择器来修改这个时间。
- 重要提示:这里修改的是文章的发布时间,会影响它在列表中的排序(默认按发布时间倒序)和所有调用该时间的地方。
常见问题与注意事项
-
修改后不生效?
- 清空缓存:这是最常见的原因,进入后台的“[系统]” -> “[一键更新缓存]”,点击“更新所有缓存”。
- 检查文件路径:确保你修改的是正确的模板文件,并且模板文件没有被覆盖。
- 检查标签语法:确保
{dede:arclist}等列表标签没有写错,并且时间调用代码在标签内部。
-
时间显示不正确(时差问题)?
- 织梦CMS支持时区设置,进入后台“[系统]” -> “[系统基本参数]” -> “[核心设置]”,找到“时间格式”和“时区设置”,确保配置正确,通常设置为
+8代表东八区。
- 织梦CMS支持时区设置,进入后台“[系统]” -> “[系统基本参数]” -> “[核心设置]”,找到“时间格式”和“时区设置”,确保配置正确,通常设置为
-
能否只显示“X天前”这样的相对时间?
- 可以,但需要自定义函数,你可以在
/include/extend.func.php文件中添加一个自定义函数,然后在模板中调用。- 在
extend.func.php中添加:function formatTime($smUnixTime, $istime = 0) { $zero1 = strtotime(date('Y-m-d', $smUnixTime)); $zero2 = strtotime(date('Y-m-d', time())); $da = $zero2 - $zero1; if ($da == 0) { return $istime ? date('H:i', $smUnixTime) : '#39;; } elseif ($da == 86400) { return $istime ? date('H:i', $smUnixTime) : '昨天'; } elseif ($da == 172800) { return $istime ? date('H:i', $smUnixTime) : '前天'; } else { return date('Y-m-d', $smUnixTime); } } - 在模板中调用:
{dede:field.pubdate function='formatTime(@me)'/}
- 在
- 可以,但需要自定义函数,你可以在
| 位置 | 模板文件 | 调用代码 | 说明 |
|---|---|---|---|
| 文章列表页 | index.htm, list_*.htm |
[field:pubdate function='strftime("格式",@me)'/] |
在 {dede:arclist} 或 {dede:list} 循环内使用 |
| 页 | article_article.htm |
{dede:field.pubdate function='strftime("格式",@me)'/} |
使用 {dede:field} 标签调用 |
| 后台设置 | 后台发布页面 | 直接修改“发布时间”输入框 | 修改的是数据本身,影响所有显示 |
按照以上步骤,你就可以轻松地在织梦CMS的任何位置添加和自定义文章的发布时间显示了。
