- 如何设置和修改文章的发布时间(后台操作)。
- 如何在前台模板中调用和显示文章的发布时间(前端开发)。
下面我将为你详细讲解这两个方面。
后台设置文章发布时间
当你发布或编辑一篇文章时,可以非常方便地设置它的发布时间。
发布新文章时设置时间
-
登录你的 DedeCMS 后台。
-
进入“内容管理” -> “添加文档”。
-
在文章编辑页面,找到“发布时间”这一项,它通常是一个日期时间选择器。
-
默认值是当前的服务器时间,你可以直接点击选择一个未来的日期和时间,也可以手动输入。
-
填写好其他内容后,点击“发布”按钮。
效果:设置一个未来的时间后,文章会保存在你的网站后台,但不会在前台显示,只有当系统时间到达你设定的时间点时,文章才会自动在前台出现,这非常适合做内容定时发布。
修改已发布文章的时间
- 进入“内容管理” -> “所有文档”。
- 找到你想要修改的文章,点击“编辑”。
- 在编辑页面,同样找到“发布时间”字段,修改为你需要的时间。
- 点击“保存”按钮即可。
前台模板调用文章发布时间
这是网站开发者在制作模板时最关心的部分,DedeCMS 使用特定的模板标签来调用数据库中的数据。
基本调用标签
在文章列表页(如 list_article.htm)或文章内容页(如 article_article.htm)中,使用以下标签来调用文章的发布时间:
{dede:field.pubdate function='strftime("%Y-%m-%d %H:%M:%S",@me)'/}
标签解析:
{dede:field.pubdate}: 这是调用文章发布时间字段的核心标签。pubdate是数据库中存储发布时间的字段名。function='...': 这是一个函数修饰符,用来对获取到的原始时间进行格式化。strftime(): 是 PHP 的一个格式化时间的函数。"%Y-%m-%d %H:%M:%S": 这是格式化字符串,定义了时间的显示方式。%Y: 四位数的年份 ( 2025)%m: 两位数的月份 ( 08)%d: 两位数的日期 ( 15)%H: 24小时制的小时 ( 14)%M: 分钟 ( 30)%S: 秒 ( 25)
@me: 代表{dede:field.pubdate}标签本身获取到的原始值。
常用时间格式示例
你可以根据需要修改格式字符串,实现不同的显示效果:
| 显示效果 | 标签代码 | 说明 |
|---|---|---|
2025-08-15 |
{dede:field.pubdate function='strftime("%Y-%m-%d",@me)'/} |
只显示年月日,最常用。 |
2025/08/15 |
{dede:field.pubdate function='strftime("%Y/%m/%d",@me)'/} |
使用斜线分隔。 |
08-15-2025 |
{dede:field.pubdate function='strftime("%m-%d-%Y",@me)'/} |
美国格式。 |
2025年08月15日 |
{dede:field.pubdate function='strftime("%Y年%m月%d日",@me)'/} |
中文格式。 |
15 Aug 2025 |
{dede:field.pubdate function='strftime("%d %b %Y",@me)'/} |
英文月份缩写。 |
2025年08月15日 14:30 |
{dede:field.pubdate function='strftime("%Y年%m月%d日 %H:%M",@me)'/} |
中文格式,带时分。 |
刚刚 / 1小时前 / 3天前 |
{dede:field.pubdate function='GetDateMK(@me)'/} |
智能相对时间,非常人性化。 |
特别说明 GetDateMK 函数:
GetDateMK 是 DedeCMS 自定义的一个非常有用的函数,它会自动将时间转换为“刚刚”、“几分钟前”、“几小时前”、“几天前”这种相对时间格式,极大地提升了用户体验,在很多新闻或博客网站的列表页中都会使用这个。
在不同模板中的使用
-
在文章列表页 (
list_article.htm): 通常在{dede:list}循环标签内使用,用来显示每篇文章的发布时间。{dede:list pagesize='10'} <li> <a href="[field:arcurl/]">[field:title/]</a> <span class="time">{dede:field.pubdate function='strftime("%Y-%m-%d",@me)'/}</span> </li> {/dede:list} -
页 (
article_article.htm): 直接在页面需要显示的位置使用即可。<div class="article-info"> <span>发布时间:{dede:field.pubdate function='strftime("%Y-%m-%d %H:%M:%S",@me)'/}</span> <span>作者:{dede:field.author/}</span> <span>来源:{dede:field.source/}</span> </div> -
在首页或其他栏目封面页 (
index.htm,index_default.htm): 通常在{dede:arclist}循环标签内使用。{dede:arclist typeid='1' titlelen='30' row='5'} <div class="entry"> <h2><a href="[field:arcurl/]">[field:title/]</a></h2> <p class="meta">[field:pubdate function='GetDateMK(@me)'/]</p> </div> {/dede:arclist}
常见问题与解决方法
问题1:为什么我修改了后台的时间,前台显示的时间没有变?
可能原因及解决方法:
- 模板缓存问题:DedeCMS 为了提高速度,会生成静态文件或缓存,你修改了数据,但缓存没有更新。
- 解决:登录后台,点击“生成” -> “更新主页HTML” 或 “更新栏目HTML”,或者直接点击“一键更新网站”来刷新缓存。
- 使用了缓存标签:在模板中可能使用了
{dede:cache}标签,导致内容被缓存。- 解决:检查模板文件,找到并移除
{dede:cache}...{/dede:cache}标签对。
- 解决:检查模板文件,找到并移除
- 文章已生成静态:如果你的文章设置为“仅动态浏览”,修改后会立即生效,但如果已经生成了静态HTML文件,你需要重新生成该文章的静态文件。
- 解决:在后台“内容管理” -> “所有文档”中,找到该文章,点击“更新”按钮,系统会重新生成它的静态文件。
问题2:我想显示文章的更新时间,而不是发布时间,怎么办?
解决方法:
DedeCMS 默认没有“更新时间”这个字段,但你可以利用 senddate 字段来模拟它。senddate 通常记录的是文章最后被修改的时间。
- 在后台编辑文章时,修改内容后点击“保存”,
senddate字段就会自动更新为当前时间。 - 在模板中,将
pubdate换成senddate即可。
<!-- 显示更新时间 -->
{dede:field.senddate function='strftime("%Y-%m-%d %H:%M:%S",@me)'/}
如果你需要更精确地记录更新时间,可以在后台添加一个自定义字段(如 updatetime),然后在文章编辑时手动填写或通过二次开发自动记录。
希望这份详细的指南能帮助你完全掌握 DedeCMS 文章发布时间的设置和调用!
