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

请问编辑器中@用户时可以直接展示用户列表吗 New

165 2
发表于 2024-1-16 12:13:03 | 查看全部 阅读模式

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

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

×
rt,请问有现成的方案可以处理吗,类似于微信的输入@后直接展示出用户列表
我知道答案 回答被采纳将会获得1 贡献 已有1人回答
我要说一句 收起回复

评论2

独家记忆Lv.8 发表于 2024-1-16 12:13:34 | 查看全部
请问,编辑器里可以@用户吗?@用户会通知到这个用户吗?没试过{:2_25:}
我要说一句 收起回复
Discuz智能体Lv.8 发表于 2025-3-17 03:09:50 | 查看全部
在Discuz!的编辑器中实现类似微信的@用户功能,并直接展示用户列表,可以通过以下步骤来实现:

1. **前端实现**:
   - 使用JavaScript监听编辑器中的输入事件,当检测到用户输入`@`时,触发一个AJAX请求,获取用户列表。
   - 在输入框下方显示一个下拉列表,展示获取到的用户列表。
   - 当用户选择某个用户时,将选中的用户名插入到编辑器中。

2. **后端实现**:
   - 创建一个PHP接口,用于处理AJAX请求,返回用户列表。
   - 这个接口可以根据用户输入的关键字(如用户名的一部分)来筛选用户,并返回匹配的用户列表。

3. **集成到Discuz!**:
   - 将上述功能集成到Discuz!的编辑器插件中,确保与现有的编辑器功能兼容。
   - 可以通过修改Discuz!的模板文件,将JavaScript代码嵌入到页面中。

4. **安全性考虑**:
   - 确保AJAX请求的安全性,防止SQL注入等攻击。
   - 对返回的用户列表进行适当的权限检查,确保用户只能看到他们有权限看到的用户。

以下是一个简单的示例代码,展示如何在前端实现这个功能:

  1. // 监听输入框的输入事件
  2. document.getElementById('editor').addEventListener('input', function(e) {
  3.     var text = e.target.value;
  4.     var lastChar = text[text.length - 1];

  5.     if (lastChar === '@') {
  6.         // 触发AJAX请求获取用户列表
  7.         fetch('/path/to/your/php/script', {
  8.             method: 'POST',
  9.             headers: {
  10.                 'Content-Type': 'application/json'
  11.             },
  12.             body: JSON.stringify({ keyword: '' })
  13.         })
  14.         .then(response => response.json())
  15.         .then(data => {
  16.             // 显示用户列表
  17.             showUserList(data.users);
  18.         });
  19.     }
  20. });

  21. function showUserList(users) {
  22.     var userList = document.getElementById('user-list');
  23.     userList.innerHTML = '';

  24.     users.forEach(function(user) {
  25.         var item = document.createElement('div');
  26.         item.textContent = user.username;
  27.         item.addEventListener('click', function() {
  28.             // 将选中的用户名插入到编辑器中
  29.             insertUsername(user.username);
  30.         });
  31.         userList.appendChild(item);
  32.     });

  33.     userList.style.display = 'block';
  34. }

  35. function insertUsername(username) {
  36.     var editor = document.getElementById('editor');
  37.     editor.value += username + ' ';
  38.     document.getElementById('user-list').style.display = 'none';
  39. }
复制代码


在后端,你可以创建一个PHP脚本来处理AJAX请求并返回用户列表:

  1. <?php
  2. // 假设你已经连接到数据库并有一个用户表
  3. $keyword = $_POST['keyword'];

  4. // 查询数据库获取匹配的用户列表
  5. $query = "SELECT username FROM users WHERE username LIKE :keyword";
  6. $stmt = $pdo->prepare($query);
  7. $stmt->execute(['keyword' => '%' . $keyword . '%']);
  8. $users = $stmt->fetchAll(PDO::FETCH_ASSOC);

  9. // 返回JSON格式的用户列表
  10. echo json_encode(['users' => $users]);
  11. ?>
复制代码


通过这种方式,你可以在Discuz!的编辑器中实现类似微信的@用户功能,并直接展示用户列表。如果你需要更复杂的功能或更好的用户体验,可以考虑使用现有的插件或进一步定制开发。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复

回复

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

本版积分规则

关闭

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

AI智能体
投诉/建议联系

discuzaddons@vip.qq.com

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

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

您的IP:3.15.211.199,GMT+8, 2025-4-11 10:51 , Processed in 0.536016 second(s), 80 queries , Gzip On, Redis On.

Powered by Discuz! X5.0 Licensed

© 2001-2025 Discuz! Team.

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