Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

楼层跳转过程浅分析

[复制链接]
beijing200808 发表于 2011-7-5 10:34:29 | 显示全部楼层 |阅读模式
本帖最后由 beijing200808 于 2011-7-5 10:38 编辑

Discuz! X 提供了一个电梯直达的功能,可以快速抵达想要浏览的帖子。
这个过程是怎么实现的呢,我们在这里简单的说一下:
先看一下文本框代码
  1. <input type="text" class="px p_fre z" size="2" onkeyup="$('fj_btn').href='forum.php?mod=redirect&ptid=$_G[tid]&authorid=$_G[gp_authorid]&postno='+this.value" onkeydown="if(event.keyCode==13) {window.location=$('fj_btn').href;return false;}" title="{lang thread_redirect_postno_tips}" />
复制代码
当填写完目标楼层时,程序提交到
  1. forum.php?mod=redirect&ptid=$_G[tid]&authorid=$_G[gp_authorid]&postno=this.value
复制代码
这个地址。

在source\module\forum\forum_redirect.php文件中,首先根据提交过来的ptid,查出这条主题的信息
  1. $thread = get_thread_by_tid($ptid);
复制代码
然后根据主题信息中的 posttable 值获取主题各帖子所在的帖子表,然后再根据填写的目标楼层postno,获取目标帖子的信息
  1. $postno = $postno > 1 ? $postno - 1 : 0;
  2. $post = DB::fetch_first("SELECT * FROM ".DB::table($thread['posttable'])." WHERE tid='$ptid' AND invisible='0' ORDER BY dateline LIMIT $postno, 1");
复制代码
所获取的帖子信息中,主要使用目标帖子的pid和帖子的发帖时间dateline。最后,再根据tid和dateline,获取目标帖子所在的分页page。至此,定位帖子所需要的 tid,page,pid就都准备完毕。最后,直接通过
  1. header("HTTP/1.1 301 Moved Permanently");
  2. dheader("Location: forum.php?mod=viewthread&tid=$tid&page=$page$authoridurl$ordertypeurl".(isset($_G['gp_modthreadkey']) && ($modthreadkey = modauthkey($tid)) ? "&modthreadkey=$modthreadkey": '')."#pid$pid");
复制代码
来实现跳转到目标帖子上。



本帖子中包含更多资源

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

x

评分

1

查看全部评分

腐朽的木头 发表于 2011-7-5 10:39:25 | 显示全部楼层
学习了  呵呵
回复

使用道具 举报

下砂 发表于 2011-7-5 10:51:25 | 显示全部楼层
回复

使用道具 举报

64243354 发表于 2011-7-5 10:58:16 | 显示全部楼层
给力的分析~
回复

使用道具 举报

pcyi 发表于 2011-7-5 11:53:50 | 显示全部楼层
不懂也看看 学着点。
回复

使用道具 举报

madajiasida 发表于 2011-7-5 17:43:51 | 显示全部楼层
{:soso_e179:}给力
回复

使用道具 举报

ARCHY` 发表于 2011-7-7 00:13:53 | 显示全部楼层
支持个
回复

使用道具 举报

wazyl 发表于 2011-7-18 12:01:17 | 显示全部楼层
学习了   不错   很好  
回复

使用道具 举报

绝非 发表于 2011-9-6 12:44:39 | 显示全部楼层
pcyi 发表于 2011-7-5 11:53
不懂也看看 学着点。

不懂你还看呀
回复

使用道具 举报

onehua 发表于 2011-9-6 12:48:21 | 显示全部楼层
不错不错,学习了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-11-21 20:51 , Processed in 0.028679 second(s), 5 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表