dede如何调用年月日?

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

在文章列表页或内容页调用文章的发布时间

这是最常见的需求,通常用于文章列表、文章详情页显示发布时间。

dede 调用年月日
(图片来源网络,侵删)

在列表页 (index.php, list.php, article_list.php 等)

在列表页循环中,每个文章都有一个 pubdate 字段,代表文章发布的时间戳(Unix时间戳),我们可以使用 MyDate() 函数来格式化这个时间戳。

基本语法:

{dede:field name='pubdate' function='MyDate("Y-m-d",@me)'/}

参数解释:

  • function='MyDate("格式", @me)':这是调用自定义函数的核心。
  • "Y-m-d":这是日期的格式。
    • Y:四位数的年份,2025
    • m:两位数的月份,0112
    • d:两位数的日期,0131
    • H:24小时制的小时,0023
    • i:分钟,0059
    • s:秒,0059
    • 你可以自由组合这些字符,"Y年m月d日 H:i:s" 会显示为 2025年10月27日 15:30:00
  • @me:这是一个特殊变量,代表当前字段的原始值,在这里就是 pubdate 的时间戳。

示例: 显示 年-月-日 格式的发布时间:

dede 调用年月日
(图片来源网络,侵删)
[field:pubdate function='MyDate("Y-m-d",@me)'/]

显示 年/月/日 格式的发布时间:

[field:pubdate function='MyDate("Y/m/d",@me)'/]

显示 年月日 格式的发布时间:

[field:pubdate function='MyDate("Ymd",@me)'/]

页 (article_article.php)

页,调用方式类似,但标签语法略有不同。

基本语法:

dede 调用年月日
(图片来源网络,侵删)
{dede:field.pubdate function='MyDate("Y-m-d",@me)'/}

或者更简洁的写法(如果只是简单格式化):

{dede:field.pubdate function='strftime("%Y-%m-%d",@me)'/}

示例: 显示 年-月-日 格式的发布时间:

{dede:field.pubdate function='MyDate("Y-m-d",@me)'/}

调用当前服务器时间

有时候你可能需要显示的不是文章时间,而是服务器当前的系统时间。

基本语法:

{dede:global name='cfg_phpurl'/}/time.php

工作原理: DedeCMS 有一个内置的 time.php 文件,它会直接输出当前服务器的时间,这个标签会拼接出这个文件的完整 URL,你可以在模板中直接使用这个 URL,或者通过 JavaScript 等方式来获取和显示时间。

示例: 直接在页面上显示一个链接,点击后查看当前服务器时间:

<a href="{dede:global name='cfg_phpurl'/}/time.php" target="_blank">查看当前服务器时间</a>

如果你想在页面上直接显示时间,可以结合 JavaScript:

<span id="serverTime"></span>
<script type="text/javascript">
    // 使用 AJAX 获取 time.php 的内容并显示
    fetch("{dede:global name='cfg_phpurl'/}/time.php")
        .then(response => response.text())
        .then(time => {
            document.getElementById("serverTime").innerText = time;
        });
</script>

调用指定的时间段(调用2025年的所有文章)

这个需求通常用于制作归档页面或特殊栏目,这需要修改 SQL 查询语句,通常在自定义模型或列表页模板中实现。

方法:修改列表页的 arc.listview.class.php 文件

  1. 找到文件:打开 /include/arc.listview.class.php 文件。
  2. 修改查询函数:找到 GetSql() 函数,修改其中的 where 条件。

示例:只调用2025年的文章

GetSql() 函数中,找到类似 $this->addSql = " And arc.typeid in($typeid) "; 的代码,在其后添加年份判断条件。

// 在 arc.listview.class.php 的 GetSql() 函数中修改
// 原始代码可能类似这样:
// $this->addSql .= " And arc.typeid in($typeid) ";
// 修改为,增加年份判断:
$year_to_query = '2025'; // 你想查询的年份
$this->addSql .= " And arc.typeid in($typeid) And FROM_UNIXTIME(arc.pubdate, '%Y') = '$year_to_query'";

代码解释:

  • FROM_UNIXTIME(arc.pubdate, '%Y'):这是一个 MySQL 函数,它将 Unix 时间戳 (arc.pubdate) 转换为指定格式的字符串,这里 %Y 代表四位年份。
  • = '$year_to_query':将转换后的年份与你设定的年份进行比较。

调用月日: 如果你想按月调用,可以修改格式为 %m (月份) 或 %Y-%m (年月)。

// 调用2025年10月的文章
$year_month_to_query = '2025-10';
$this->addSql .= " And arc.typeid in($typeid) And FROM_UNIXTIME(arc.pubdate, '%Y-%m') = '$year_month_to_query'";

注意:直接修改核心文件不是最佳实践,升级时可能会被覆盖,建议通过二次开发或覆盖文件的方式来实现。


在自定义表单或模型中调用时间

如果你在后台创建了自定义模型或表单,并且有日期类型的字段,调用方法也是一样的。

假设你有一个自定义字段 shijian (字段名),类型为日期时间。

在列表页调用:

[field:shijian function='MyDate("Y-m-d",@me)'/]

页调用:**

{dede:field.shijian function='MyDate("Y-m-d",@me)'/}

总结与速查表

需求场景 调用代码 说明
文章列表页 - 年月日 [field:pubdate function='MyDate("Y-m-d",@me)'/] 最常用,格式化文章发布时间。
文章列表页 - 年/月/日 [field:pubdate function='MyDate("Y/m/d",@me)'/] 改变分隔符。
页 - 年月日 {dede:field.pubdate function='MyDate("Y-m-d",@me)'/} 内容页的标签语法。
获取当前服务器时间 {dede:global name='cfg_phpurl'/}/time.php 输出一个链接或通过JS获取。
调用特定年份文章 修改 arc.listview.class.php 的SQL查询 where 条件中加入 FROM_UNIXTIME(pubdate, '%Y') = '2025'
调用自定义字段时间 [field:自定义字段名 function='MyDate("Y-m-d",@me)'/] 适用于自定义模型中的日期字段。

希望这份详细的指南能帮助你解决在 DedeCMS 中调用年月日的问题!

-- 展开阅读全文 --
头像
dede微信分享插件怎么安装使用?
« 上一篇 今天
c语言 print语句
下一篇 » 今天

相关文章

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

目录[+]