分享
 
 
 

数据库不变,把一个论坛变成N个论坛

王朝other·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

欢迎转载此文章至其他论坛,转贴请注明原创nLeXeR@Discuz.net

6.0.0 RC1可用此方法

为什么要这么做,大家可以打开Repalys.net看一下,这是个游戏论坛,里面有魔兽论坛,有星际论坛,他们的做法是,安装多个论坛,魔兽一个论坛,星际一个论坛,这个大家都会,没什么技术含量。对比Replays.net的做法,那个网站是每个游戏独立安装一个论坛,这样做的缺点显而易见,数据库多了,服务器负担也就更重了,而且我去了SC论坛再去WAR3论坛,又得注册一个用户,一个帖子这边发了,去那边还要再发一次。

而按照我的方法做,所有的论坛用的都是同一数据库,用户资料积分等全部通用,我们还可以让灌水板块和站务论坛等板块在每个论坛里面都显示,这样就避免了重复发贴资源浪费。唯一一个小小的不完美就是打开首页的时候会显示一个index.php?styleid=31,这个不是什么大问题,你进了板块和帖子那个后面的?styleid=31自然会消失,会员也可以手动指定风格。

操作如下

首先我们这样做,新装一个Discuz!论坛,这个基本上不用说,大家都是装好了的

然后将里面的文件复制N份放到几个不同的目录里面,例如.\AAA .\BBB等。。。

接着我们用下面的方法来修改index.php,让他显示特定的板块,来实现不同目录显示不同的板块,记得修改之前备份一个并将其重命名为index2.php或者任何你喜欢的名字,这个文件以后还会用到

在index.php里面找下面的代码

代码:

$sql = !empty($accessmasks)?

"SELECT f.fid, f.fup, f.type, f.name, f.threads, f.posts, f.todayposts, f.lastpost, f.inheritedmod, ff.description, ff.moderators, ff.icon, ff.viewperm, a.allowview FROM {$tablepre}forums f

LEFT JOIN {$tablepre}forumfields ff ON ff.fid=f.fid

LEFT JOIN {$tablepre}access a ON a.uid='$discuz_uid' AND a.fid=f.fid

WHERE f.status='1' ORDER BY f.type, f.displayorder"

: "SELECT f.fid, f.fup, f.type, f.name, f.threads, f.posts, f.todayposts, f.lastpost, f.inheritedmod, ff.description, ff.moderators, ff.icon, ff.viewperm FROM {$tablepre}forums f

LEFT JOIN {$tablepre}forumfields ff USING(fid)

WHERE f.status='1' ORDER BY f.type, f.displayorder";

然后将其改成

代码:

$id='15,16,17,18';

$sql = !empty($accessmasks)?

"SELECT f.fid, f.fup, f.type, f.name, f.threads, f.posts, f.todayposts, f.lastpost, f.inheritedmod, ff.description, ff.moderators, ff.icon, ff.viewperm, a.allowview FROM {$tablepre}forums f

LEFT JOIN {$tablepre}forumfields ff ON ff.fid=f.fid

LEFT JOIN {$tablepre}access a ON a.uid='$discuz_uid' AND a.fid=f.fid

WHERE f.status='1' AND f.fid IN ($id) ORDER BY f.type, f.displayorder"

: "SELECT f.fid, f.fup, f.type, f.name, f.threads, f.posts, f.todayposts, f.lastpost, f.inheritedmod, ff.description, ff.moderators, ff.icon, ff.viewperm FROM {$tablepre}forums f

LEFT JOIN {$tablepre}forumfields ff USING(fid)

WHERE f.status='1' AND f.fid IN ($id) ORDER BY f.type, f.displayorder";

修改过后的代码第一行里面的15、16、17、18就是你想要显示的板块的fid,包括分类的gid也要填上,例如我的论坛要显示灌水区和贴土区,他们的fid分别是18和9,他们都属于游戏文化里面,游戏文化分类的gid是25,那么就应该填写9,18,25,如果只填9和18会显示不正常的。

这个改好了之后看一看,不同的目录显示的板块就不一样了,例如你让其中一个只显示游戏板块,那么他就是游戏论坛了,让另外一个只显示娱乐板块,那么他就是娱乐论坛了。

当然由于这两个论坛用的都是同一设置,所以论坛名都是一样,如果你设置论坛名为XX游戏论谈,那么娱乐论谈也会显示XX游戏论谈,这时候我们要手动修改模板里面的论坛名,用记事本打开.\templates\default\*.htm,搜索$bbname,然后将其改为你要显示的论坛名例如XX娱乐论坛的字样,或者你可以用一个叫“字符替换器”的工具来批量修改(如果你能找到一个好用并且无毒的“字符替换器”,请发一份给我,谢谢),记住只需要修改*.htm文件,如果你修改了*.php文件,可能造成论坛无法访问,打开后一片空白。如果你使用的不是默认风格,还需要修改你所使用的风格所对应的*.htm文件

好,这一步之后我们再看,所显示的板块完全不同,显示的论坛名也不一样,俨然就是两个论谈了,当然这还不行,因为两个论坛都是用的同一个风格,我们需要让他显示不同的风格,用记事本新建一个index.htm,然后在里面写上这么一行代码

代码:

<html><body>

<meta http-equiv="refresh" content="0;url=index.php?styleid=31">

</body></html>

这一句的代码非常简单,就是在零秒之后跳转到index.php并且调用sid为31的这个风格,然后把这个index.htm放到跟index.php同一目录下面,就可以了,由于打开网页的时候index.htm优先级高于index.php,所以先会打开index.htm,然后就会跳转到载入相应风格的首页了,记住每个文件夹都要放这个文件,否则就有可能显示的风格不是你所想要的。

需要注意的有几个问题,如果要添加新的板块,在后台添加完了之后,需要打开index2.php(没有修改过的)来让所有板块都显示出来,查看一下你新添加的板块的fid和新分类的gid,然后将编号添加到index.php中,这样才能显示。然后安装了新的风格之后,不用在后台选择使用哪个风格,只需要修改index.htm就可以了,但是为了保守起见,还是把默认的风格设置成一个比较通用的风格。还有就是在后台设置论坛名称,只能修改那个没有改过模板的目录里面的,其他的需要手动修改*.htm文件才可以。

打开templates\default\discuz.htm,找到

代码:

<!--{if $supe['status']}--><a href="$supe[siteurl]" target="_blank">$supe['sitename']</a>&nbsp;-<!--{/if}-->

将里面的$supe['sitename']手动改成你所想显示的网站名,如果你没有用Super Site的话,这里就什么都不会显示,如果你安装了Super Site并且只是针对某几个论坛的,其他的论坛则可以删除这一句。

打开templates\default\dicuz.htm,找到这一句

代码:

<!--{if !empty($announcements)}-->

<div id="announcement">$announcements</div><script type="text/javascript">announcement();</script>

<!--{/if}-->

这一句是显示公告的,你在A论坛发的公告,B论坛也会显示,这样我们就要删除他,然后自己手动修改B论坛的公告了,把$announcements改成这样<a fref=http://www.rtsclub.com/dzhelp/announcement.php?id=25#25>公告文字</a>的代码就可以了,当然所有的论坛都必须得这样修改才可以,在每个论坛都指定相应的公告,当然如果所有论坛都显示一样的公告的话,就不必修改了

不仅是公告,包括联盟论坛,只要是你的两个论坛上需要显示得不一样的东西,都必须手动来修改模板,将其写死,修改的时候还是得手动修改模板

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有