Ticket #289 (closed 需求: 已处理)

Opened 12 years ago

Last modified 12 years ago

最数码论坛聚超值版块域名实现方案

Reported by: dingjianyong Owned by: zhangzhuojian
Priority: 最高级(1) Milestone:
Component: 核心模块 Version: BBS7.0
Keywords: Cc:
Due Date: 06/06/2014

Description

最数码论坛下的fid=22是聚超值版块,由于聚超值版块是属于聚超值应用的讨论区,需要实现此版块与聚超值应用域名统一。
即:
 http://piebbs.pconline.com.cn/forum-22.html
需要变为:
 http://best.pconline.com.cn/bbs/


 http://piebbs.pconline.com.cn/topic-xx.html
需要变为:
 http://best.pconline.com.cn/bbs/topic-xx.html

Attachments

nginx_best.conf Download (986 bytes) - added by zhangzhuojian 12 years ago.
聚超值应用nginx配置
nginx_piebbs.conf Download (449 bytes) - added by zhangzhuojian 12 years ago.
最数码论坛nginx配置

Change History

Changed 12 years ago by zhangzhuojian

聚超值应用nginx配置

Changed 12 years ago by zhangzhuojian

最数码论坛nginx配置

comment:1 Changed 12 years ago by zhangzhuojian

最数码论坛聚超值版块域名实现方案

一、nginx跳转配置

1、聚超值应用nginx配置:分两部分(详见附件配置文件nginx_best.conf):

(1)当请求 http://best.pconline.com.cn/bbs/,指定跳转到最数码论坛nginx的 http://piebbs.pconline.com.cn/forum-best.html

特别说明:此处跳转到forum-best.html,而不是直接请求forum.do?fid=22,是为了防止循环重定向。

(2)拦截除(1)之外的其他所有以best域名开头的请求,并分发到最数码论坛nginx中匹配的location。

2、最数码论坛nginx配置:分两部分(详见附件配置文件nginx_piebbs.conf):

(1)当请求旧域名 http://piebbs.pconline.com.cn/forum-22.html,需永久重定向至 http://best.pconline.com.cn/bbs/
(2)处理由聚超值应用nginx分发过来的请求 http://piebbs.pconline.com.cn/forum-best.html

二、实现方案

核心思路:判断forum、topic、post对象的版块fid是否等于22。

1、后台插件配置:

(1)配置聚超值版块的fid=22

(2)配置聚超值版块转换的域名(http://best.pconline.com.cn/bbs

2、页面的处理:

(1)页面上主要通过PieHeaderTag标签处理类实现判断处理,此标签接收fid参数。如:<plugin:pieHeader fid="${forum.fid}">

(2)根据传入的fid,PieHeaderTag标签处理类会做两件事:

①产生一个key为showPieHeader的标记(value为true or false,true代表聚超值版块),并存放在pageContext,主要用于页面上对【聚超值版块的栏目条】以及【域名显示】的判断。

②将在后台插件中配置的域名( http://best.pconline.com.cn/bbs/)取出,并存放在pageContext,key为ROOT2。当①中的showPieHeader=true时,页面上会将原本系统配置的ROOT的值替换为ROOT2的值,否则ROOT的值不变。

(3)列表页的处理,主要包括:

①保证页面上的js请求正常,即同域请求;

②全站置顶贴,如果不是属于聚超值版块的,域名仍以piebbs开头;

③分页标签的处理;

④最新帖、精华帖调用接口/intf/common/_topics.jsp;

(4)帖子页的处理,主要包括:

①保证页面上的js请求正常,即同域请求;

②分页标签的处理;

③如果在聚超值版块的帖子页中删除主题,因为被删主题的fid会变为1,刷新页面后,原来页面上的域名会由best变为piebbs开头,所以需特殊处理,保证主题被删后的best域名不变。

(5)发帖/回帖页的处理,主要包括:

①保证页面上的js请求正常,即同域请求;

②时间选择器WdatePicker.js需同域引入,否则无法弹出;发html帖用到的js文件也需同域引入。

特别说明:三大页面中一些后台管理相关的链点可不做域名转换。

3、后台代码:

(1)在Functions.java工具类中定义的方法:

①isBest方法:根据forum、topic、post对象判断是否为聚超值版块。

②getRoot方法:获取后台插件配置的域名。在htmlUrl方法(将页面链接静态化)中使用。

③getDeletedTopicFid方法:获取被删主题在被删之前的fid。在聚超值版块的帖子页中删除主题时用到。

④isStartsWithPluginRoot方法:是否以插件中配置的root为前缀。在parserUrl方法中使用。

⑤重载htmlUrl(String url, int pageNo)方法,得到htmlUrl(String url, int pageNo, String root)方法:结合(2)中的函数②,用于分页标签的处理。

(2)页面上f标签库新增两个函数:

①f:root:用于全站置顶贴,如果不是属于聚超值版块的,域名仍以piebbs开头。

②f:url2best:结合(1)中的方法⑤,用于分页标签的处理。

comment:2 Changed 12 years ago by dingjianyong

  • Status changed from new to closed
  • Resolution set to 已处理
Note: See TracTickets for help on using tickets.