来源:http://bbs.xqin.com/htm_data/20/2005-9-1/3869.html
修正整理BY小勤
说明:
1)不保证完全没有BUG和漏洞,是否安装风险自担;
2)不对使用不当造成的后果负责,所以,安装前请进行数据备份和程序备份
3)欢迎大家在试用中提出意见和建议
第一步:后台准备
在后台修改论坛路径:
风格模板修改图片和表情的路径为完整
比如:
界面图片目录 {IMGDIR}:images/default修改为http://bbs.xqin.com/images/default
在后台升级数据库中运行
- ALTER TABLE `cdb_forums` ADD `allowhtmlpage` TINYINT( 1 ) DEFAULT '1' NOT NULL ;
复制代码
对不需要生成 html 的论坛 运行
- UPDATE `cdb_forums` SET `allowhtmlpage` = '0' WHERE `fid` =你的对应版块FID LIMIT 1 ;
复制代码
多个版面请执行多个对应FID的即可
第二步:FTP直接上传
上传HTML要用到的三个模板 viewthread_html,header_html,footer_html 到模板目录
viewthread_html,header_html ,footer_html 是默认的FD2.5F风格的模版,若你采用的是其他风格,可以对照比较修改你的viewthread,header,footer模版后另存为viewthread_html,header_html ,footer_html模版,header_html 中HEAD标签之间加上- <meta http-equiv="Pragma" content="no-cache">
- <meta http-equiv="cache-control" content="no-cache,must-revalidate">
- <meta http-equiv="Expires" content="0">
复制代码
另存为的_html模版其中主要修改的都是一些路径问题所以修改的时候可以查找href=和src=把连接和图片路径对应修改为相对根目录的相对路径比如查找然后替换为如果连接地址嫌麻烦也可以在header_html的<head>之间加上这句- <base href="{$boardurl}">
复制代码 图片路径请在后台风格里面也设置成你的绝对URL地址,比如[quote]界面图片目录 {IMGDIR}:images/default修改为http://bbs.xqin.com/images/default
并查找替换为
补充说明:后台修改了{IMGDIR}为绝对路径了,凡是有{IMGDIR}的地方就不需要加{$boardurl}了,只把没有{IMGDIR}的IMG路径修改下就可以了,后台没有修改为绝对路径,就需要所有的IMG路径全加上,这个涉及到的路径问题,总之你按适合自己的论坛修改路径为正确的就可以了,比如可以直接在你的路径前加/bbs/(假设BBS是你的论坛目录)也是一样的效果,作为站长路径问题稍做思考应该不是很难的哦[/quote]
上传两个PHP文件:viewsplus.php header.php 到论坛根目录
论坛根目录建立文件夹 htm_data 如果是类UNIX系统,属性设为777
注意:如果未安装其它插件并且使用默认风格,直接上传全部文件覆盖即可完成安装。否则,按照下面步骤修改
第三步:修改
模板forumdisplay.htm
找到
- <a href="viewthread.php?tid=$thread[tid]&fpage=$page" $thread[highlight]>$thread[subject]</a>
复制代码
改为
修改 forumdisplay.php
找到
在其上面增加
- ////////////////////////////////////////////
- $cachefile=DISCUZ_ROOT."htm_data/$fid/$thread[dateline]/$thread[tid].html";
- if($forum['allowhtmlpage']=="1" && $thread['poll']=="0" && $thread['creditsrequire']=="0" && file_exists($cachefile)) {
- $thread[threadlisturl]=<<<EOD
- <a href="htm_data/$fid/$thread[dateline]/$thread[tid].html" $thread[highlight]>$thread[subject]</a>
- EOD;
- }else{
- $thread[threadlisturl]=<<<EOD
- <a href="viewthread.php?tid=$thread[tid]&extra=$extra" $thread[highlight]>$thread[subject]</a>
- EOD;
- }
-
- ////////////////////////////////////////////////
复制代码
修改 viewthread.php
找到
- define('CURRSCRIPT', 'viewthread');
复制代码
增加
- //在你的开始处加入 ob_start();
- ob_start();
复制代码
找到A
- $multipage = multi($thread['replies'] + 1, $ppp, $page, "viewthread.php?tid=$tid&fpage=$fpage&highlight=".rawurlencode($highlight));
复制代码
修改为
- $multipage = multi($thread['replies'] + 1, $ppp, $page, "{$boardurl}viewthread.php?tid=$tid&fpage=$fpage&highlight=".rawurlencode($highlight));
复制代码
找到B
- $navigation .= "» <a href="forumdisplay.php?fid=$fid&page=$fpage"> $forum[name]</a> » $thread[subject]";
复制代码
修改为
- $navigation .= "» <a href="{$boardurl}forumdisplay.php?fid=$fid&page=$fpage"> $forum[name]</a> » $thread[subject]";
复制代码
找到C
- $navigation .= "» <a href="forumdisplay.php?fid=$fup[fid]">$fup[name]</a> » <a href="forumdisplay.php?fid=$fid&page=$fpage"> $forum[name]</a> » $thread[subject]";
复制代码
修改为
- $navigation .= "» <a href="{$boardurl}forumdisplay.php?fid=$fup[fid]">$fup[name]</a> » <a href="{$boardurl}forumdisplay.php?fid=$fid&page=$fpage"> $forum[name]</a> » $thread[subject]";
复制代码
查找:D
- $post['avatar'] = '<img src="'.$_DCACHE['usergroups'][$post['groupid']]['groupavatar'].'" border="0">';
复制代码
替换为:
- $post['avatar'] = '<img src="'.$boardurl.''.$_DCACHE['usergroups'][$post['groupid']]['groupavatar'].'" border="0">';
复制代码
再查找:E
- $post['avatar'] = '<img src="'.$post['avatar'].'" width="'.$post['avatarwidth'].'" height="'.$post['avatarheight'].'" border="0">';
复制代码
替换为:
- $post['avatar'] = '<img src="'.$boardurl.''.$post['avatar'].'" width="'.$post['avatarwidth'].'" height="'.$post['avatarheight'].'" border="0">';
复制代码
再查找:F
- $post['karma'] .= '<img src="'.IMGDIR.'/'.$rateimg.'" align="right">';
复制代码
替换为:
- $post['karma'] .= '<img src="'.$boardurl.''.IMGDIR.'/'.$rateimg.'" align="right">';
复制代码
找到G
- include template('viewthread');
复制代码
替换为
- // include template('viewthread');
- ////////////生成HTML增加代码
- $thread['dateline'] = gmdate($dateformat, $thread['dateline'] + $timeoffset * 3600);
- $cachefile="htm_data/$fid/$thread[dateline]/$thread[tid].html";
-
- if($forum['allowhtmlpage']=="1" && $page=="1" && $thread['poll']=="0" && $thread['creditsrequire']=="0" && !file_exists($cachefile))
- {
- $thread[threadlistphpurl]=<<<EOD
- <a href="{$boardurl}viewthread.php?tid=$tid&fpage=$fpage&highlight=".rawurlencode($highlight)>动态页面</a>
- EOD;
- include template('viewthread_html');
- //在结尾加入 ob_end_clean(),并把本页输出到一个变量中
- $temp = ob_get_contents();
- ob_end_clean();
- if(!is_dir('htm_data/'.$fid)){
- @mkdir('htm_data/'.$fid,0777);
- writeover("htm_data/$fid/index.html",'');
- }
- if(!is_dir('htm_data/'.$fid.'/'.$thread[dateline])){
- @mkdir('htm_data/'.$fid.'/'.$thread[dateline],0777);
- writeover("htm_data/$fid/$thread[dateline]/index.html",'');
- }
- //写入文件
- $fp = fopen($cachefile,'w');
- fwrite($fp,$temp) or die('写文件错误');
- fclose($fp);
- header("Location: $cachefile");
- exit();
- }else{
- include template('viewthread');
- }
-
- /////////////////生成HTML增加代码结束
复制代码
再在文件结尾加上
- function writeover($filename,$data,$method="rb+",$iflock=1){
- touch($filename);
- $handle=fopen($filename,$method);
- if($iflock){
- flock($handle,LOCK_EX);
- }
- fputs($handle,$data);
- if($method=="rb+") ftruncate($handle,strlen($data));
- fclose($handle);
- }
复制代码
修改 topicadmin.php
找到
- $fupadd = $fup ? "OR (fid='$fup[fid]' && type<>'group')" : NULL;
复制代码
在下面增加
- //////////////////////生成HTML增加代码
- $thread['dateline'] = gmdate($dateformat, $thread['dateline'] + $timeoffset * 3600);
- $cachefile=DISCUZ_ROOT."htm_data/$fid/$thread[dateline]/$thread[tid].html";
- if(file_exists($cachefile)){
- @unlink($cachefile);
- }
-
- //////////////////////////生成HTML增加代码结束
复制代码
修改 include\newreply.php
找到
- if ($forum['fup'] && $forum['type'] == 'sub' && !$forum['viewperm']) {
- $db->query("UPDATE $table_forums SET lastpost='".addslashes($thread['subject'])."\t$timestamp\t$discuz_user' WHERE fid='$forum[fup]'", 'UNBUFFERED');
- }
复制代码
在下面增加
- //////////////////////////////生成HTML增加代码
- $thread['dateline'] = gmdate($dateformat, $thread['dateline'] + $timeoffset * 3600);
- $cachefile=DISCUZ_ROOT."htm_data/$fid/$thread[dateline]/$thread[tid].html";
- if(file_exists($cachefile)){
- @unlink($cachefile);
- }
- //////////////////////////////生成HTML增加代码结束
复制代码
修改 include\editpost.php
找到
- if(!$isorigauthor) {
- @$fp = fopen(DISCUZ_ROOT.'./forumdata/modslog.php', 'a');
- @flock($fp, 2);
- @fwrite($fp, "$timestamp\t$discuz_user\t$groupid\t$onlineip\t$forum[fid]\t$forum[name]\t$thread[tid]\t$thread[subject]\t$modaction\n");
- @fclose($fp);
- }
复制代码
在下面增加
- /////////////////////////生成HTML增加代码
- $thread['dateline'] = gmdate($dateformat, $thread['dateline'] + $timeoffset * 3600);
- $cachefile=DISCUZ_ROOT."htm_data/$fid/$thread[dateline]/$thread[tid].html";
- if(file_exists($cachefile)){
- @unlink($cachefile);
- }
- /////////////////////////////////生成HTML增加代码结束
复制代码
include\attachment.php
找到
- return '<img src="images/attachicons/'.$GLOBALS['_DCACHE']['attachicon'][$typeid].'" align="absmiddle" border="0">';
复制代码
替换为
- return '<img src="'.$boardurl.'images/attachicons/'.$GLOBALS['_DCACHE']['attachicon'][$typeid].'" align="absmiddle" border="0">';
复制代码
到此修改结束,到前台测试下看是否成功了?
修改中注意的问题:
若你修改后生成的帖子中图片不能显示请检查viewthread.php和viewthread_html,footer_html header_html里面的图片路径,一般查找<img后即可SRC后面的路径修改为相对你的站点根目录的相对路径或者直接绝对URL路径即可~一般在HEAD中加上<base href="{$boardurl}">即可保证连接地址的路径不出错误的,如果修改过程中有问题可以参照对比压缩包中的对应文件进行比较修改
给个好工具TextDiff文本比较器:http://bbs.xqin.com/data/text.exe,修改的话可以对照压缩包的文件和你自己论坛的文件进行比较修改
下载压缩文件已更新,最新修正9-2-6:00,测试失败的可以重新下载参照修改
http://www.xqin.com/down/dz-html.rar
反安装:
1.数据库升级
- ALTER TABLE 'cdb_forums' DROP 'allowhtmlpage'
复制代码
或者直接用你的安装前的备份数据还原
2.用安装前的备份文件还原覆盖你修改了的对应文件
[ 本帖最后由 小勤网络 于 2005-9-2 11:21 编辑 ] |