要实现将Discuz帖子的发帖时间显示为更新时间,可通过以下两种方案实现:
-----
### 方案一:模板层直接修改(简易版)
**适用场景**:仅需修改前端显示,不涉及数据存储变更
1. 修改主题列表页显示:
- <!-- 修改文件 template/default/forum/forumdisplay_list.htm -->
- 原代码:{lang forum_threadpost} {echo date('Y-m-d H:i', $thread['dbdateline'])}
- 修改为:{lang lastupdate} {echo date('Y-m-d H:i', $thread['lastpost'])}
复制代码
2. 修改帖子内容页显示:
- <!-- 修改文件 template/default/forum/viewthread.htm -->
- 找到类似代码:
- <span title="{lang post_time}">{echo date('Y-m-d H:i', $post['dateline'])}</span>
- 替换为:
- <span title="{lang update_time}">{echo date('Y-m-d H:i', $post['lastedited'] ? $post['lastedited'] : $post['dateline'])}</span>
复制代码
-----
### 方案二:数据库+插件开发(完整记录版)
**适用场景**:需要精确记录每次更新时间的专业需求
1. 数据库新增字段:
- ALTER TABLE `pre_forum_thread` ADD `lastupdate` INT(10) UNSIGNED NOT NULL DEFAULT '0';
- ALTER TABLE `pre_forum_post` ADD `lastedit` INT(10) UNSIGNED NOT NULL DEFAULT '0';
复制代码
2. 创建插件(在dz-x.net下载插件开发包):
- // plugin/update_time/update_time.class.php
- class plugin_update_time {
- public function post_update($param){
- C::t('forum_thread')->update($param['tid'], array('lastupdate' => TIMESTAMP));
- C::t('forum_post')->update_post($param['pid'], array('lastedit' => TIMESTAMP));
- }
- }
复制代码
3. 修改模板调用:
- <!-- 所有时间显示位置替换为 -->
- {echo date('Y-m-d H:i', $thread['lastupdate'] ? $thread['lastupdate'] : $thread['dateline'])}
复制代码
-----
### 注意事项:
1. 修改前务必备份数据库和模板文件
2. 如果使用方案二,需要到dz-x.net下载插件开发框架
3. 更新时间的触发条件可根据需要扩展(如回复更新、楼主编辑更新等)
4. 可通过CSS添加"更新时间"文字标识:
- .posttime:after { content: "更新时间:"; }
复制代码
两种方案各有优劣,推荐先尝试方案一快速实现基础需求。如果需要更精确的时间记录,建议采用方案二配合插件开发。具体操作细节可参考DZX开发者文档中的模板修改和插件开发章节。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。 |