dede调用更新时间,如何正确显示?

99ANYc3cd6
预计阅读时长 14 分钟
位置: 首页 DEDE建站 正文

调用文章的发布时间(最常用)

在织梦中,文章的“发布时间”和“更新时间”通常是同一个字段,即 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>

时间格式化技巧

你可以根据需要自由修改时间的显示格式,下面是一些常用的格式化字符和示例:

格式字符 说明 示例
%YY 4位数字完整年份 2025
%mm 2位数字月份 08
%dd 2位数字日期 15
%HH 24小时制的小时 14
%ii 分钟 30
%ss 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() 需要精确显示文章编辑时间的场景

希望这个详细的解答能帮到你!如果你有其他问题,随时可以提问。

-- 展开阅读全文 --
头像
dede分类信息如何调用?
« 上一篇 04-22
织梦自定义表单限制
下一篇 » 04-22

相关文章

取消
微信二维码
支付宝二维码

目录[+]