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

希望增加一个不翻页加载的功能

226 2

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

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

×
很多应用现在都没有翻页功能了,希望discuz能增加pc和手机端 帖子和帖子列表下拉刷新,或者点击下一页按钮就在本页加载的功能,不用跳转url页码
我要说一句 收起回复

评论2

婷姐Lv.8 发表于 2022-6-2 10:44:26 | 查看全部
跟上潮流
我要说一句 收起回复
Discuz智能体Lv.8 发表于 2025-3-16 19:23:14 | 查看全部
要实现Discuz论坛的帖子列表和帖子内容页面的无刷新加载功能(即下拉刷新或点击“下一页”按钮时在当前页面加载内容,而不跳转URL),你可以通过以下步骤来实现:

### 1. 使用AJAX技术
AJAX(Asynchronous JavaScript and XML)是一种在不重新加载整个页面的情况下,与服务器交换数据并更新部分网页的技术。你可以通过AJAX来实现无刷新加载功能。

### 2. 修改模板文件
你需要修改Discuz的模板文件,以便在用户下拉或点击“下一页”按钮时触发AJAX请求。

#### 2.1 修改帖子列表模板
找到帖子列表的模板文件(通常是`forumdisplay_list.htm`),在适当的位置添加以下代码:

  1. <div id="thread-list">
  2.     <!-- 这里是帖子列表的内容 -->
  3. </div>
  4. <button id="load-more">加载更多</button>

  5. <script>
  6. document.getElementById('load-more').addEventListener('click', function() {
  7.     var page = 2; // 假设当前是第一页,下一页是第二页
  8.     var url = 'forum.php?mod=forumdisplay&fid=' + fid + '&page=' + page;

  9.     fetch(url)
  10.         .then(response => response.text())
  11.         .then(data => {
  12.             var parser = new DOMParser();
  13.             var doc = parser.parseFromString(data, 'text/html');
  14.             var newThreads = doc.querySelectorAll('.thread-item'); // 假设每个帖子项有.thread-item类
  15.             var threadList = document.getElementById('thread-list');

  16.             newThreads.forEach(function(thread) {
  17.                 threadList.appendChild(thread);
  18.             });

  19.             page++; // 更新页码
  20.         });
  21. });
  22. </script>
复制代码


#### 2.2 修改帖子内容模板
找到帖子内容的模板文件(通常是`viewthread.htm`),在适当的位置添加以下代码:

  1. <div id="post-list">
  2.     <!-- 这里是帖子内容 -->
  3. </div>
  4. <button id="load-more-posts">加载更多回复</button>

  5. <script>
  6. document.getElementById('load-more-posts').addEventListener('click', function() {
  7.     var page = 2; // 假设当前是第一页,下一页是第二页
  8.     var url = 'forum.php?mod=viewthread&tid=' + tid + '&page=' + page;

  9.     fetch(url)
  10.         .then(response => response.text())
  11.         .then(data => {
  12.             var parser = new DOMParser();
  13.             var doc = parser.parseFromString(data, 'text/html');
  14.             var newPosts = doc.querySelectorAll('.post-item'); // 假设每个回复项有.post-item类
  15.             var postList = document.getElementById('post-list');

  16.             newPosts.forEach(function(post) {
  17.                 postList.appendChild(post);
  18.             });

  19.             page++; // 更新页码
  20.         });
  21. });
  22. </script>
复制代码


### 3. 处理AJAX请求
在服务器端,你需要确保AJAX请求返回的是纯HTML内容,而不是整个页面。你可以通过检查请求头中的`X-Requested-With`字段来判断是否是AJAX请求,并返回相应的内容。

### 4. 下拉刷新功能
要实现下拉刷新功能,你可以使用JavaScript监听页面的滚动事件,并在用户滚动到页面底部时触发AJAX请求。

  1. window.addEventListener('scroll', function() {
  2.     if (window.innerHeight + window.scrollY >= document.body.offsetHeight) {
  3.         // 用户滚动到页面底部,触发加载更多内容
  4.         document.getElementById('load-more').click();
  5.     }
  6. });
复制代码


### 5. 样式调整
你可能需要调整一些CSS样式,以确保新加载的内容能够正确显示,并且页面布局不会因为内容的动态加载而出现问题。

### 6. 测试和优化
在实现这些功能后,务必进行充分的测试,确保在不同浏览器和设备上都能正常工作。你还可以根据用户反馈进行优化,比如添加加载动画、错误处理等。

### 7. 插件化(可选)
如果你希望将这个功能封装成一个插件,以便在其他站点上复用,你可以参考Discuz的插件开发手册,将上述代码封装成一个插件,并通过DZ插件网(https://www.dz-x.net/)发布。

通过以上步骤,你可以为Discuz论坛实现无刷新加载功能,提升用户体验。如果你在实现过程中遇到任何问题,欢迎随时在DZ插件网(https://www.dz-x.net/)寻求帮助。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复

回复

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

本版积分规则

图文热点
关闭

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

AI智能体
投诉/建议联系

discuzaddons@vip.qq.com

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

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

您的IP:3.137.210.249,GMT+8, 2025-4-2 16:38 , Processed in 0.348326 second(s), 83 queries , Gzip On, Redis On.

Powered by Discuz! X5.0 Licensed

© 2001-2025 Discuz! Team.

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