dede自定义提交时间如何设置?

99ANYc3cd6
预计阅读时长 20 分钟
位置: 首页 DEDE建站 正文
  1. 后台文章编辑模板文件 (article_add.htmarticle_edit.htm):用于在界面上增加时间选择的输入框。
  2. 后台处理逻辑文件 (add.phpedit.php):用于接收前端提交的时间数据,并保存到数据库中。

下面我将为你提供详细、分步的教程,请根据你的 DedeCMS 版本(主要是 5.x 和 7.x)选择对应的方法。

dede自定义提交时间
(图片来源网络,侵删)

⚠️ 重要提示:操作前备份!

在进行任何文件修改之前,务必备份你即将要修改的文件,以防操作失误导致网站无法正常使用。


通用方法(适用于 DedeCMS 5.x 及 7.x)

这个方法最基础,也最稳定,通过直接修改模板和处理文件来实现。

步骤 1:修改后台文章添加模板 (article_add.htm)

  1. 找到文件: 通过 FTP 或你的主机文件管理器,进入 /dede/ 目录,找到 article_add.htm 文件。

  2. 定位代码: 在文件中找到 <input name="pubdate" type="text" id="pubdate" value="<?php echo $nowtime=mytime(); ?>" size="12" class="input-text" readonly /> 这一行代码,它通常在标题、来源等字段的附近。

    dede自定义提交时间
    (图片来源网络,侵删)
  3. 修改代码: 将 readonly 属性去掉,并增加一个时间选择器,方便用户选择,修改后的代码如下:

    <!-- 原始代码 (大约第 220 行左右) -->
    <td width="180">发布时间:</td>
    <td>
        <input name="pubdate" type="text" id="pubdate" value="<?php echo $nowtime=mytime(); ?>" size="12" class="input-text" readonly />
        <img src="images/calendar.gif" width="16" height="16" border="0" style="cursor:pointer" onclick="showCalendar('pubdate', this.src)" />
    </td>
    <!-- 修改后的代码 -->
    <td width="180">发布时间:</td>
    <td>
        <input name="pubdate" type="text" id="pubdate" value="<?php echo $nowtime=mytime(); ?>" size="12" class="input-text" />
        <img src="images/calendar.gif" width="16" height="16" border="0" style="cursor:pointer" onclick="showCalendar('pubdate', this.src)" />
        <span class="lit">(留空则为当前时间)</span>
    </td>

    修改说明

    • 我们删除了 readonly 属性,这样你就可以直接在输入框里输入时间了。
    • 保留了 <img> 标签,这样你依然可以点击小图标弹出日历进行选择。
    • 增加了提示文字 (留空则为当前时间),让用户更清楚如何操作。

步骤 2:修改后台文章编辑模板 (article_edit.htm)

添加文章和编辑文章的模板是分开的,所以编辑页面也需要做同样的修改。

  1. 找到文件: 在 /dede/ 目录下找到 article_edit.htm 文件。

    dede自定义提交时间
    (图片来源网络,侵删)
  2. 定位并修改代码: 同样地,找到包含 pubdate<input> 标签,执行与 article_add.htm 完全相同的修改。

步骤 3:修改后台处理逻辑 (add.phpedit.php)

这部分是核心,确保你输入的时间能被正确保存到数据库。

  1. 修改 add.php (添加文章时)

    • 找到文件/dede/add.php
    • 定位代码:找到 if(empty($typeid)) 之前的代码段,通常会有 $pubdate 变量的定义。
    • 修改代码:增加一个判断,如果用户没有输入时间,则使用当前时间。
    // 原始代码 (大约在 30-40 行)
    // $pubdate = $senddate ? $senddate : $mktime;
    // $sortrank = $senddate ? $senddate : $mktime;
    // 修改后的代码
    if(empty($pubdate))
    {
        $pubdate = $mktime;
    }
    $sortrank = $pubdate;
  2. 修改 edit.php (编辑文章时)

    • 找到文件/dede/edit.php
    • 定位代码:找到 //更新数据库 的注释下方,通常在 $upquery 这条 SQL 语句之前。
    • 修改代码:同样增加对 $pubdate 的判断。
    // 原始代码 (大约在 200 行左右)
    // $upquery = "UPDATE `#@__archives` SET 
    //     typeid='$typeid',title='$title',shorttitle='$shorttitle',color='$color',writer='$writer',source='$source',
    //     litpic='$litpic',pubdate='$pubdate',sortrank='$sortrank',mid='$arcmember',description='$description',
    //     keywords='$keywords',redirecturl='$redirecturl',arcrank='$arcrank',click='$click',ismake='$ismake',
    //     channel='$channelid',senddate='$senddate',mtype='$mtype',dutyadmin='$adminid'
    //     WHERE id='$aid' ";
    // 修改后的代码 (将 pubdate 和 sortrank 的处理逻辑提前)
    if(empty($pubdate))
    {
        $pubdate = $mktime;
    }
    $sortrank = $pubdate;
    $upquery = "UPDATE `#@__archives` SET 
        typeid='$typeid',title='$title',shorttitle='$shorttitle',color='$color',writer='$writer',source='$source',
        litpic='$litpic',pubdate='$pubdate',sortrank='$sortrank',mid='$arcmember',description='$description',
        keywords='$keywords',redirecturl='$redirecturl',arcrank='$arcrank',click='$click',ismake='$ismake',
        channel='$channelid',senddate='$senddate',mtype='$mtype',dutyadmin='$adminid'
        WHERE id='$aid' ";

步骤 4:清空缓存并测试

  1. 登录 DedeCMS 后台。
  2. 点击顶部菜单的“系统” -> “一键更新站点” -> “更新系统缓存”。
  3. 尝试发布一篇新文章,检查“发布时间”字段是否可以手动输入和修改。
  4. 尝试编辑一篇旧文章,检查是否同样可以修改时间。

仅适用于 DedeCMS 7.x 的方法(更推荐)

DedeCMS 7.x 版本在后台管理中已经内置了“发布时间”的修改功能,但可能被默认隐藏或需要稍作调整,如果你的版本是 7.x,建议优先尝试此方法,因为它更符合官方的设计,也更稳定。

  1. 检查后台设置

    • 登录后台,进入“系统” -> “系统基本参数” -> “核心设置”。
    • 找到是否开启了“允许自定义发布时间”之类的选项,如果有的话,确保它是“是”。
    • 在 DedeCMS 7.x 中,这个功能通常是默认开启的,只是界面可能不直观。
  2. 直接在编辑界面修改

    • 在后台发布或编辑文章时,找到“发布时间”这个字段。
    • 你会发现它旁边有一个日历图标,并且输入框默认是可编辑的(不像 5.x 版本默认是 readonly)。
    • 你可以直接点击输入框修改时间,或者点击日历图标选择时间。
    • 如果输入框是 readonly 状态,说明你网站的模板文件可能被修改过,或者使用了旧版的模板,你可以参照 方法一 中的步骤 1 和 2,去掉 readonly 属性即可。

对于 DedeCMS 7.x 用户,方法二 是最简单、最标准的做法,如果方法二不满足你的需求(比如你想让这个字段变成必填等),再使用 方法一 进行深度定制。


高级应用:如何在前台显示自定义时间?

你可能会问,我设置了自定义时间,但前台文章列表和详情页显示的时间还是不对,怎么办?

这是因为前台模板调用的是 pubdate 这个字段,但它的格式可能不是你想要的。

解决方案:修改前台模板

  1. 找到前台模板文件

    • 文章列表页模板:/templets/default/list_article.htm
    • 页模板:/templets/default/article_article.htm
  2. 找到时间调用标签

    • 通常是这样的形式:[field:pubdate function='strftime("%Y-%m-%d %H:%M:%S",@me)'/]
    • 或者更简单的:[field:pubdate function='GetDateTimeMK(@me)'/]
  3. 修改格式: 你可以根据需要修改 strftime 函数的格式化字符串。

    • "%Y-%m-%d %H:%M:%S" 显示为 2025-10-27 15:30:00
    • "%Y-%m-%d" 显示为 2025-10-27
    • "%m-%d" 显示为 10-27

    你只想显示年月日,就把标签修改为: [field:pubdate function='strftime("%Y-%m-%d",@me)'/]

通过以上步骤,你就可以完全掌控 DedeCMS 中文章的提交时间了,希望这个详细的教程能帮到你!

-- 展开阅读全文 --
头像
C语言如何实现面向对象编程?
« 上一篇 03-04
Linux下C语言小游戏如何实现?
下一篇 » 03-04

相关文章

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

目录[+]