织梦 arclist 时间

99ANYc3cd6
预计阅读时长 17 分钟
位置: 首页 织梦建站 正文

arclist是织梦最核心、最常用的列表调用标签,功能非常强大,时间的显示主要通过其内部的底层模板变量(如[field:pubdate/])和格式化函数(strftime)来实现。


核心时间变量

arclist标签中,你可以使用以下与时间相关的底层变量:

变量名 说明 示例输出
pubdate 文档发布时间(默认字段) 2025-10-27 10:30:00
senddate 文档录入时间 2025-10-27 10:25:15
sortrank 文档排序时间(通常用于置顶、推荐等) 1698371400 (Unix时间戳)
click 点击次数(虽然不是时间,但常与时间一起使用) 1256

注意: pubdate 是最常用的时间变量,它代表了文章的发布时间,在大多数情况下,你只需要使用 pubdate 就够了。


时间格式化:strftime 函数

直接使用 [field:pubdate/] 得到的是完整的日期时间格式(如 2025-10-27 10:30:00),但通常我们只需要年、月、日,或者特定的格式,这时就需要使用 strftime 函数。

语法: [field:pubdate function="strftime('格式化字符串', @me)"/]

常用格式化字符串:

格式化字符 说明 示例
%Y 4位数字完整年份 2025
%y 2位数字年份 23
%m 数字月份(有前导0) 10
%d 日期(有前导0) 27
%H 小时(24小时制,有前导0) 10
%i 小时(12小时制,有前导0) 10
%M 分钟(有前导0) 30
%S 秒(有前导0) 00
%b 月份的英文缩写 Oct
%a 星期的英文缩写 Fri
%F Y-m-d 的简写 2025-10-27
%D m/d/y 的简写 10/27/23

常用时间显示示例

下面是一些在arclist标签中调用时间的常见写法。

基础调用

{dede:arclist titlelen='30' row='5'}
  <li>
    <a href="[field:arcurl/]">[field:title/]</a>
    <span>[field:pubdate/]</span>
  </li>
{/dede:arclist}

效果:1 2025-10-27 10:30:002 2025-10-26 15:22:11


示例1:只显示年月日 (Y-m-d)

这是最常见的用法。

{dede:arclist titlelen='30' row='5'}
  <li>
    <a href="[field:arcurl/]">[field:title/]</a>
    <span>[field:pubdate function="strftime('%Y-%m-%d', @me)"/]</span>
  </li>
{/dede:arclist}

效果:1 2025-10-272 2025-10-26


示例2:只显示月日 (m-d)

{dede:arclist titlelen='30' row='5'}
  <li>
    <a href="[field:arcurl/]">[field:title/]</a>
    <span>[field:pubdate function="strftime('%m-%d', @me)"/]</span>
  </li>
{/dede:arclist}

效果:1 10-272 10-26


示例3:显示中文年月日 (Y年m月d日)

如果想让日期显示为中文格式,可以在strftime中添加中文。

{dede:arclist titlelen='30' row='5'}
  <li>
    <a href="[field:arcurl/]">[field:title/]</a>
    <span>[field:pubdate function="strftime('%Y年%m月%d日', @me)"/]</span>
  </li>
{/dede:arclist}

效果:1 2025年10月27日2 2025年10月26日


示例4:显示“X天前”或“X小时前”等相对时间

这种“人性化”时间显示在博客和新闻网站中非常流行,织梦没有直接提供这个函数,但可以通过自定义函数实现。

步骤:

  1. 打开 /include/extend.func.php 文件
  2. 在文件末尾的 ?> 之前,添加以下PHP函数:
/**
 * 生成相对时间
 * @param string $from 时间字符串
 * @return string
 */
function formatTime($from)
{
    $now = time();
    $diff = $now - strtotime($from);
    if ($diff < 60) {
        return '刚刚';
    } elseif ($diff < 3600) {
        return floor($diff / 60) . '分钟前';
    } elseif ($diff < 86400) {
        return floor($diff / 3600) . '小时前';
    } elseif ($diff < 2592000) { // 30天
        return floor($diff / 86400) . '天前';
    } else {
        // 如果超过30天,则显示具体日期
        return date('Y-m-d', strtotime($from));
    }
}

在模板文件中使用这个自定义函数:

{dede:arclist titlelen='30' row='5'}
  <li>
    <a href="[field:arcurl/]">[field:title/]</a>
    <span>[field:pubdate function="formatTime(@me)"/]</span>
  </li>
{/dede:arclist}

效果:1 2小时前2 刚刚3 15天前


示例5:显示星期几

{dede:arclist titlelen='30' row='5'}
  <li>
    <a href="[field:arcurl/]">[field:title/]</a>
    <span>[field:pubdate function="strftime('%Y-%m-%d %a', @me)"/]</span>
  </li>
{/dede:arclist}

效果:1 2025-10-27 Fri


arclist标签自带的时间属性

除了在模板里用function格式化,arclist标签本身也提供了一些与时间相关的属性,可以在调用时就进行排序。

  • orderby='pubdate': 按发布时间降序排列(默认值)。
  • orderby='senddate': 按录入时间降序排列。
  • orderby='sortrank': 按文章排序值(如置顶级别)降序排列。
  • orderway='desc': 降序排列(默认,最新的在前面)。
  • orderway='asc': 升序排列(最旧的在前面)。

示例:调用最新的5篇文章,按发布时间倒序

{dede:arclist titlelen='30' row='5' orderby='pubdate' orderway='desc'}
  <li>
    <a href="[field:arcurl/]">[field:title/]</a>
    <span>[field:pubdate function="strftime('%Y-%m-%d', @me)"/]</span>
  </li>
{/dede:arclist}

这个例子中,orderby='pubdate' orderway='desc' 是默认行为,所以可以省略,但写上能让代码意图更清晰。

需求 代码写法
调用默认完整时间 [field:pubdate/]
格式化为 Y-m-d [field:pubdate function="strftime('%Y-%m-%d', @me)"/]
格式化为 Y年m月d日 [field:pubdate function="strftime('%Y年%m月%d日', @me)"/]
格式化为 X天前(需自定义函数) [field:pubdate function="formatTime(@me)"/]
按录入时间排序 {dede:arclist ... orderby='senddate' ...}

掌握 field:pubdatestrftime 的组合使用,就能满足你在织梦模板中99%的时间显示需求。

-- 展开阅读全文 --
头像
c语言(floatfloat)
« 上一篇 01-02
织梦 cattree 示例
下一篇 » 01-02

相关文章

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

目录[+]