调用文章的发布时间(最常用)
在织梦中,文章的“发布时间”和“更新时间”通常是同一个字段,即 pubdate,当你编辑文章并点击“保存”或“发布”时,这个时间就会被更新,绝大多数情况下,我们直接调用 pubdate 即可。
在列表页(如 arclist 标签)中调用
列表页通常使用 {dede:arclist} 标签来循环输出文章列表。
基本语法:
{dede:arclist typeid='' row='10' titlelen='30'}
<li>
<a href="[field:arcurl/]">[field:title/]</a>
<span>更新时间:[field:pubdate function='strftime("%Y-%m-%d %H:%M:%S",@me)'/]</span>
</li>
{/dede:arclist}
代码解析:
[field:pubdate/]:这是调用文章发布时间(更新时间)的核心标签。function='strftime("%Y-%m-%d %H:%M:%S",@me)':这是一个非常重要的函数,用于格式化时间。strftime是PHP的日期格式化函数。"%Y-%m-%d %H:%M:%S"是格式化字符串,你可以根据需要修改。@me代表当前字段的原始值(这里是Unix时间戳)。
页(如 article_articledetail.htm)中调用
页通常使用 {dede:field} 标签来调用当前文章的字段。
基本语法:
<h1>[field:title/]</h1>
<div class="info">
<span>发布时间:[field:pubdate function='MyDate("Y-m-d H:i:s",@me)'/]</span>
<span>来源:[field:source/]</span>
<span>作者:[field:writer/]</span>
</div>
代码解析:
[field:pubdate/]:同样调用文章的发布时间。function='MyDate("Y-m-d H:i:s",@me)':这里使用了织梦自带的MyDate函数,它和strftime的作用类似,都是用来格式化时间的。MyDate在织梦模板中非常常用。
调用文章的最后修改时间(更精确)
如果你希望调用的是文章最后一次被编辑的时间,而不是发布时间,那么你需要调用 uptime 字段,这个字段在文章被修改时会被自动更新。
在列表页(arclist 标签)中调用
只需要将 pubdate 替换为 uptime 即可。
{dede:arclist typeid='' row='10' titlelen='30'}
<li>
<a href="[field:arcurl/]">[field:title/]</a>
<span>最后修改:[field:uptime function='strftime("%Y-%m-%d",@me)'/]</span>
</li>
{/dede:arclist}
页({dede:field} 标签)中调用
同样,将 pubdate 替换为 uptime。
<h1>[field:title/]</h1>
<div class="info">
<span>最后修改:[field:uptime function='MyDate("Y-m-d",@me)'/]</span>
</div>
时间格式化技巧
你可以根据需要自由修改时间的显示格式,下面是一些常用的格式化字符和示例:
| 格式字符 | 说明 | 示例 |
|---|---|---|
%Y 或 Y |
4位数字完整年份 | 2025 |
%m 或 m |
2位数字月份 | 08 |
%d 或 d |
2位数字日期 | 15 |
%H 或 H |
24小时制的小时 | 14 |
%i 或 i |
分钟 | 30 |
%s 或 s |
秒 | 05 |
%M |
3个字母的月份缩写 | Aug |
%F |
年-月-日 格式 |
2025-08-15 |
%D |
月/日/年 格式 |
08/15/23 |
示例:
-
只显示年月日:
[field:pubdate function='MyDate("Y-m-d",@me)'] <!-- 结果:2025-08-15 --> -
显示中文格式的年月日:
[field:pubdate function='strftime("%Y年%m月%d日",@me)'] <!-- 结果:2025年08月15日 --> -
显示“X天前”这样的相对时间(需要JS或PHP函数): 这是一个比较高级的需求,通常需要自定义函数,织梦默认不直接支持,但你可以通过修改
include/extend.func.php文件来添加一个自定义函数,然后在模板里调用。在
extend.func.php中添加函数:// 时间转换函数 function timeago($ptime) { $ptime = strtotime($ptime); $etime = time() - $ptime; if ($etime < 1) return '刚刚'; $interval = array ( 12 * 30 * 24 * 60 * 60 => '年前', 30 * 24 * 60 * 60 => '个月前', 7 * 24 * 60 * 60 => '周前', 24 * 60 * 60 => '天前', 60 * 60 => '小时前', 60 => '分钟前', 1 => '秒前' ); foreach ($interval as $secs => $unit) { $d = $etime / $secs; if ($d >= 1) { $r = round($d); return $r . $unit; } } }在模板中调用:
[field:pubdate function='timeago(@me)'] <!-- 结果:3天前 -->
| 需求 | 核心标签 | 推荐函数 | 适用场景 |
|---|---|---|---|
| 调用发布/更新时间 | [field:pubdate/] |
MyDate() / strftime() |
绝大多数情况,列表页和内容页 |
| 调用最后修改时间 | [field:uptime/] |
MyDate() / strftime() |
需要精确显示文章编辑时间的场景 |
希望这个详细的解答能帮到你!如果你有其他问题,随时可以提问。
