旁边直接添加发布日期
这是最常见的需求,通常希望日期格式是 YYYY-MM-DD 或 MM-DD。

方法 1:直接修改模板文件 (最简单、最常用)
这是最直接的方法,通过修改列表页模板文件来实现。
-
找到模板文件 登录你的 DedeCMS 后台,进入【模板】->【默认模板管理】。 找到并点击你的列表页模板,通常是
list_default.htm。 -
定位并修改代码 在
list_default.htm文件中,找到循环输出文章列表的{dede:list}标签,代码结构通常是这样的:<ul class="list"> {dede:list pagesize='10'} <li> <span class="title">[field:title/]</span> <span class="date">[field:pubdate function="MyDate('Y-m-d',@me)"/]</span> </li> {/dede:list} </ul> -
添加日期标签 在你想要显示日期的位置(比如在
title标签后面),添加 DedeCMS 的日期字段标签。
(图片来源网络,侵删)-
推荐写法 (格式化日期):
<span class="date">[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>field:pubdate:这是文章的发布日期字段。function="MyDate('Y-m-d',@me)":这是关键,它调用 DedeCMS 内置的MyDate函数来格式化日期。'Y-m-d':这是日期的格式。Y:四位数的年份 (如 2025)m:两位数的月份 (如 09)d:两位数的日期 (如 01)- 你可以自由组合,
'm-d'只显示月日,或者'Y-m-d H:i'显示年月日时分。
-
简单写法 (直接输出时间戳):
<span class="date">[field:pubdate/]</span>
这种方式会直接输出一个 Unix 时间戳(1672531200),不推荐直接使用,因为它对用户不友好。
-
-
添加 CSS 样式 (可选) 为了让日期和标题在视觉上分开,可以添加一些 CSS 样式,在模板文件或你的 CSS 文件中添加如下样式:
(图片来源网络,侵删).list li { list-style: none; margin-bottom: 10px; display: flex; /* 使用 flex 布局让标题和日期并排 */ justify-content: space-between; align-items: center; } .list .title { font-weight: bold; flex-grow: 1; /* 让标题占据剩余空间 */ } .list .date { color: #999; font-size: 0.9em; margin-left: 15px; }
方法 2:通过修改 include/arc.listview.class.php 文件 (不推荐,但功能更强)
如果你想在所有列表页都统一添加日期,并且不想修改每个模板,可以考虑修改核心文件。但请注意,修改核心文件在升级 DedeCMS 时可能会被覆盖,所以请谨慎操作。
-
找到并打开文件
/include/arc.listview.class.php -
定位代码 搜索
GetArcList函数,找到处理列表数据的循环部分,通常在while($row = $this->dsql->GetArray())循环内部。 -
添加自定义字段 在循环内,你可以手动给
$row数组添加一个自定义的日期字段。// ... 在 while 循环内部 ... while($row = $this->dsql->GetArray()) { // --- 在这里添加你的代码 --- // 获取格式化后的日期 $row['custom_date'] = MyDate('Y-m-d', $row['pubdate']); // ------------------------- // ... 后续的代码 ... } -
在模板中使用 修改你的
list_default.htm模板,使用这个新添加的自定义字段:<span class="date">[field:custom_date/]</span>
在列表页的“列表头”添加日期范围
有些时候,你可能想在列表页的标题或描述区域显示当前栏目下的文章日期范围,“栏目名称 (2025-01-01 至 2025-12-31)”。
这可以通过在列表页模板中直接使用 DedeCMS 的全局变量标签来实现。
在 list_default.htm 模板的头部或任何你想要显示的位置,添加以下代码:
<h1>
{dede:field.title/}
(从 {dede:global.maxpubdate function='MyDate("Y-m-d",@me)'/} 至 {dede:global.minpubdate function='MyDate("Y-m-d",@me)'/})
</h1>
解释:
{dede:global.maxpubdate/}和{dede:global.minpubdate/}是 DedeCMS 在解析列表页时自动计算出的当前栏目下所有文章的最大和最小发布日期(Unix 时间戳)。- 我们同样使用
function='MyDate()'来将这些时间戳格式化为用户友好的日期格式。
总结与推荐
| 需求场景 | 推荐方法 | 优点 | 缺点 |
|---|---|---|---|
| 在每篇文章标题旁添加日期 | 方法 1:修改模板文件 | 简单、直接、安全、不破坏核心文件 | 需要为每个模板手动修改 |
| 在列表头添加日期范围 | 使用全局变量标签 | 方便、动态、无需修改代码 | 只适用于特定场景 |
| 在所有列表页统一添加日期 | 方法 2:修改核心文件 | 一次修改,全局生效 | 有风险,升级CMS会失效,可能引入未知问题 |
对于绝大多数用户,强烈推荐使用“方法 1:修改模板文件”,这是最标准、最安全、最灵活的方式,可以让你完全控制列表页的显示样式。
希望这个详细的教程能帮到你!如果在操作中遇到任何问题,欢迎随时提问。
