·设为首页收藏本站📧邮箱修改🎁免费下载专区📒收藏夹👽聊天室📱AI智能体
返回列表 发布新帖

discuz实现发表新贴子可以引用其他用户的帖子

245 1
发表于 2023-9-27 07:12:52 | 查看全部 阅读模式

马上注册,免费下载更多dz插件网资源。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
大概功能就是发布新的帖子可以引用别人的帖子并且发送消息通知用户帖子被引用,有点类似知乎的问答,但不是直接在别人帖子下面回复。不知道dz能否实现这个功能或者该如何实现,期待解答我知道答案 回答被采纳将会获得1 贡献 已有0人回答
我要说一句 收起回复

评论1

Discuz智能体Lv.8 发表于 2025-3-17 06:43:24 | 查看全部
要实现Discuz论坛中发布新帖子时引用其他用户的帖子,并且发送消息通知被引用的用户,可以通过以下步骤来实现:

### 1. 修改发帖模板
首先,你需要在发帖页面添加一个“引用帖子”的功能。可以通过修改Discuz的模板文件来实现。

#### 修改模板文件
找到 `template/default/forum/post.htm` 文件,在发帖表单中添加一个“引用帖子”的输入框或按钮。

  1. <div class="quote-post">
  2.     <label for="quote_post_id">引用帖子ID:</label>
  3.     <input type="text" id="quote_post_id" name="quote_post_id" placeholder="输入要引用的帖子ID">
  4. </div>
复制代码


### 2. 修改发帖处理逻辑
接下来,你需要修改Discuz的发帖处理逻辑,使其能够处理引用的帖子ID,并在发帖时插入引用内容。

#### 修改发帖处理文件
找到 `source/module/forum/forum_post.php` 文件,在发帖处理逻辑中添加引用帖子的处理代码。

  1. // 获取引用的帖子ID
  2. $quote_post_id = intval($_GET['quote_post_id']);

  3. if ($quote_post_id) {
  4.     // 查询被引用的帖子内容
  5.     $quoted_post = C::t('forum_post')->fetch($quote_post_id);
  6.     if ($quoted_post) {
  7.         // 将引用内容插入到新帖子中
  8.         $message = "[quote]".$quoted_post['message']."[/quote]\n".$message;
  9.         
  10.         // 发送通知给被引用的用户
  11.         $notification = array(
  12.             'uid' => $quoted_post['authorid'],
  13.             'type' => 'quote',
  14.             'new' => 1,
  15.             'authorid' => $_G['uid'],
  16.             'author' => $_G['username'],
  17.             'note' => '您的帖子被引用',
  18.             'dateline' => TIMESTAMP,
  19.             'from_id' => $pid,
  20.             'from_idtype' => 'quote'
  21.         );
  22.         C::t('common_notification')->insert($notification);
  23.     }
  24. }
复制代码


### 3. 添加通知功能
为了在用户被引用时发送通知,你需要在Discuz的通知系统中添加一个新的通知类型。

#### 修改通知类型
找到 `source/class/table/table_common_notification.php` 文件,添加一个新的通知类型。

  1. public function add_notification($uid, $type, $new, $authorid, $author, $note, $dateline, $from_id, $from_idtype) {
  2.     return DB::insert('common_notification', array(
  3.         'uid' => $uid,
  4.         'type' => $type,
  5.         'new' => $new,
  6.         'authorid' => $authorid,
  7.         'author' => $author,
  8.         'note' => $note,
  9.         'dateline' => $dateline,
  10.         'from_id' => $from_id,
  11.         'from_idtype' => $from_idtype
  12.     ));
  13. }
复制代码


### 4. 测试功能
完成上述修改后,你可以在论坛中测试这个功能。发布新帖子时,输入要引用的帖子ID,查看是否成功引用并发送通知。

### 5. 优化用户体验
为了提升用户体验,你可以在前端添加一个“引用”按钮,点击后自动填充引用帖子ID,并显示引用内容预览。

#### 添加引用按钮
在 `template/default/forum/post.htm` 文件中添加一个引用按钮:

  1. <button type="button" onclick="quotePost()">引用帖子</button>
复制代码


#### 添加JavaScript代码
在页面底部添加JavaScript代码,处理引用按钮的点击事件:

  1. function quotePost() {
  2.     var postId = prompt("请输入要引用的帖子ID:");
  3.     if (postId) {
  4.         // 通过AJAX获取帖子内容并插入到发帖框中
  5.         $.ajax({
  6.             url: 'forum.php?mod=ajax&action=quotepost&postid=' + postId,
  7.             success: function(data) {
  8.                 $('#message').val(data + '\n' + $('#message').val());
  9.             }
  10.         });
  11.     }
  12. }
复制代码


### 6. 处理AJAX请求
在 `source/module/forum/forum_ajax.php` 文件中添加处理AJAX请求的代码:

  1. if ($_GET['action'] == 'quotepost') {
  2.     $postid = intval($_GET['postid']);
  3.     $post = C::t('forum_post')->fetch($postid);
  4.     if ($post) {
  5.         echo "[quote]".$post['message']."[/quote]";
  6.     }
  7.     exit();
  8. }
复制代码


### 7. 完成
通过以上步骤,你已经实现了在Discuz中发布新帖子时引用其他用户的帖子,并且发送消息通知被引用的用户的功能。

如果你在实现过程中遇到任何问题,欢迎随时在DZ插件网(https://www.dz-x.net/)寻求帮助。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复

回复

 懒得打字嘛,点击右侧快捷回复【查看最新发布】   【应用商城享更多资源】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

图文热点
关闭

站长推荐上一条 /1 下一条

AI智能体
投诉/建议联系

discuzaddons@vip.qq.com

未经授权禁止转载,复制和建立镜像,
如有违反,按照公告处理!!!
  • 联系QQ客服
  • 添加微信客服

联系DZ插件网微信客服|最近更新|Archiver|手机版|小黑屋|DZ插件网! ( 鄂ICP备20010621号-1 )|网站地图 知道创宇云防御

您的IP:18.188.171.53,GMT+8, 2025-5-10 01:00 , Processed in 0.227260 second(s), 72 queries , Gzip On, Redis On.

Powered by Discuz! X5.0 Licensed

© 2001-2025 Discuz! Team.

关灯 在本版发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表