织梦pubdate是什么?

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

pubdate 是什么?

pubdate 是 "publish date"(发布日期)的缩写,在织梦DedeCMS中,它是一个数据库字段,主要用于存储文章或文档被正式发布到网站上的时间点

织梦 pubdate
(图片来源网络,侵删)
  • 数据类型:在 dede_archives (文章主表) 中,pubdate 字段的数据类型是 int(10),存储的是一个 Unix 时间戳。
  • 核心作用:记录文章的发布时间,是网站内容排序(如最新文章)、时间归档、以及前台显示发布日期的基础。

pubdate 字段在数据库中的位置

pubdate 字段主要位于以下几个核心表中:

  1. dede_archives (文章数据表)

    • 这是最重要的表,存储了文章的基本信息,如标题、内容、作者、ID等。
    • pubdate 字段就在这里,与 idtypeidtitle 等字段并列。
  2. dede_arctiny (文章摘要表)

    • 这个表是 dede_archives 的一个简化版,用于提高首页等列表页的查询速度。
    • 它同样包含 pubdate 字段,存储的也是 Unix 时间戳。
  3. dede_addonarticle (文章附加表)

    织梦 pubdate
    (图片来源网络,侵删)
    • 当文章模型使用了“文章”以外的模型(如图集、软件下载等)时,文章的扩展属性(如出处、作者简介等)会存放在这个表里。
    • 注意pubdate 字段不在这个表中,它始终在主表 dede_archives 中。

如何获取和使用 pubdate

在织梦的模板文件(.htm)中,我们主要通过底层模板变量来调用 pubdate 的值。

在列表页(如 index.htm, list.htm)中调用

列表页通常使用循环 {dede:list}{dede:arclist} 标签来遍历文章。

示例代码:

{dede:arclist row='10' titlelen='30'}
    <li>
        <a href="[field:arcurl/]">[field:title/]</a>
        <!-- 方式一:直接调用Unix时间戳(不推荐) -->
        <span>发布时间戳:[field:pubdate/]</span>
        <!-- 方式二:使用日期格式化函数(强烈推荐) -->
        <span>发布时间:[field:pubdate function="MyDate('Y-m-d H:i:s',@me)"/]</span>
        <!-- 方式三:使用简化的日期格式化函数 -->
        <span>发布时间:[field:pubdate function='strftime("%Y-%m-%d",@me)'/]</span>
    </li>
{/dede:arclist}

代码解析:

织梦 pubdate
(图片来源网络,侵删)
  • [field:pubdate/]:直接输出 pubdate 字段的值,即一个长整形的 Unix 时间戳(1712345678)。
  • [field:pubdate function="MyDate('Y-m-d H:i:s',@me)"/]
    • 这是织梦推荐的标准用法
    • function="..." 表示调用一个PHP函数。
    • MyDate() 是织梦内置的日期格式化函数。
    • 'Y-m-d H:i:s' 是你想要的日期格式,Y代表四位年份,m代表月份,d代表日,H代表小时,i代表分钟,s代表秒。
    • @me 代表当前字段的原始值,也就是 pubdate 的时间戳。
  • [field:pubdate function='strftime("%Y-%m-%d",@me)'/]
    • 这是使用PHP原生的 strftime() 函数,同样可以格式化日期,但 MyDate() 更为常用和强大。

页(如 article_article.htm)中调用

页使用 {dede:field} 标签来调用当前文章的字段。

示例代码:

<h1>[field:title/]</h1>
<div class="info">
    <span>作者:[field:writer/]</span>
    <span>发布时间:[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
    <span>来源:[field:source/]</span>
</div>

pubdatesenddate 的区别

这是一个非常容易混淆但重要的概念。

特性 pubdate (发布日期) senddate (录入日期)
含义 文章发布到前台的时间。 文章录入到后台系统的时间。
修改方式 在后台编辑文章时,可以手动修改发布日期。 通常由系统自动生成,在文章被创建时记录,一般不可直接修改
应用场景 - 文章排序:按最新发布时间排序。
- 时间归档:按年、月归档文章。
- 前台显示:向用户展示“发布于X年X月”。
- 内部管理:用于识别文章的录入顺序。
- 防作弊:可以防止用户通过修改发布时间来“欺骗”搜索引擎或用户,使其文章看起来是新发布的。
常见操作 可被手动修改,常用于“定时发布”功能,或在发布后发现时间错误时进行修正。 不可被轻易修改,是文章的“原始创建时间”。

简单总结: senddate 是文章的“出生证明”,记录它何时被创建。pubdate 是文章的“上牌日期”,记录它何时对公众可见,除非有特殊需求(如定时发布或修正错误),否则 pubdatesenddate 在创建文章时是相同的。


常见问题与技巧

如何按发布时间排序?

在列表页的标签中,使用 orderby 属性。

{dede:arclist row='10' orderby='pubdate'}
    <!-- 这将按 pubdate 从新到旧排序 -->
{/dede:arclist}
{dede:arclist row='10' orderby='pubdate' orderway='asc'}
    <!-- 这将按 pubdate 从旧到新排序 (asc=升序) -->
{/dede:arclist}

为什么我的 pubdate 显示不正确?

  • 时间戳错误:检查后台文章编辑页面的发布日期是否设置正确。
  • 时区问题:确保服务器和织梦系统的时区设置一致,可以在后台“系统” -> “系统基本参数” -> “核心设置”中检查“站点时区”。
  • 模板标签错误:检查模板中调用 pubdate 的标签是否书写正确,特别是 function 部分。

如何实现“定时发布”功能?

织梦的后台文章编辑器中,有一个“发布时间”选项,你可以设置一个未来的时间,然后勾选“仅保存,暂不发布”,文章会在你设定的时间点自动变为“已发布”状态,并更新 pubdate 字段。


pubdate 是织梦DedeCMS中一个功能强大且基础的字段,它不仅记录了文章的发布时间,更是实现内容动态排序、时间归档和前台信息展示的关键,掌握如何正确调用和格式化 pubdate,以及理解它与 senddate 的区别,是进行织梦二次开发和日常维护的必备技能。

-- 展开阅读全文 --
头像
C语言如何实现面向对象的多态特性?
« 上一篇 04-10
织梦templets模板如何快速修改与使用?
下一篇 » 04-10

相关文章

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

目录[+]