本帖最后由 mc008 于 2009-2-6 11:20 编辑
申明:鄙人不懂网页代码,接触PHP也就四五个月时间,都是胡搞的,不要鸡蛋我。
文中方法大部分为本人原创,所有涉及到7.0版本的方法均为安装在本地127.0.0.1上测试,未上传至服务器测试,如果采纳,请慎重!并经多次测试、备份原文件后方上传至服务器!修改后是否存在安全问题,请大家多多指正!
文章导读:
一、加载自定义页头、页脚的方法;
二、添加自定义php页面;(很多人需要的自定义的页面,比如"关于我们","如何汇款","论坛图库","IP查询"等页面)
三、利用其他的CMS系统生成htm页面让DZ论坛加载运行;
四、JS复制加版权:1、复制后只在最后另起一行加版权;2、复制后在每个段落后都加版权,在最后一段另起一行加来源地址;3、复制后在指定的字符后面加版权和来源地址。
五、关于防复制的打印页面的处理;
六、给页面添加繁体和简体互转功能(适合任何网站);
七、首页横排:给首页每个栏目加上自定义二级栏目动态,如最新回复等功能(前提是开启横排),在后台的内部数据调用方式实现。
1、首页横排只调用主题;
2、首页横排主题+图片主题(图片主题取代栏目图片)。
八、给帖子标签加上其他的搜索参数及连接。
------------------------------------------
一、加载自定义页头、页脚的方法。适用范围:6.1、7.0 。演示站点:www.cjbee.cn
如果我们需要自定义的页头、页脚,怎么办呢?方法:例如我们就把“header.htm”另存为新的名字,如cjbee.htm(稍微修改,改为你想要的页面头部,<div id="menu">下面的最好不要修改,会员登陆栏的),把这文件存在默认的/templates/default/包下(有FTP功能的直接上传即可,不需要在后台添加模板,系统自动找到此文件;没有FTP功能的可在后台添加模板方法即可),那么就可以加载{subtemplate cjbee},首页discuz.htm、帖子的viewthread.htm加载的话就把{subtemplate header}改为{subtemplate cjbee};需要加载自定义页面部分方法一样。自定义脚部footer.htm的同理(里面的代码{eval output();}等最好不要少,如果没有的话,会员登陆后又自动退出或其他的)。
{subtemplate cjbee}与{template cjbee}少了sub也是一样的,但是区别在哪里我也不清楚,估计是default包内与包外调用区别吧。
二、添加自定义页面,类型:php。适用范围:6.1、7.0。我想这个功能应该有很多人需要的。
有时我们需要添加一些自定义的页面,比如“关于我们”、“如何汇款”、“论坛图库”、“IP查询”等自定义页面,方法如下:把代码- <?php
- require_once './include/common.inc.php';
- include template('bee');
- ?>
复制代码 另存为你想要的自定义名字,如bee.php,注意,代码中的“bee”为加载/templates/default/模块目录中的bee.htm,bee.htm模块里的代码为:- {subtemplate header}
- <div id="nav"><a href="$indexname">$bbname</a> » <a href="bee.php">自定义名字</a>
- </div>
- {subtemplate XXX1}
- {subtemplate XXX2}
- {eval request('aaa');}
- {subtemplate footer}
复制代码 代码说明:
1、{subtemplate header}为页面头部,支持自定义页头,最好加载这个,因为这样会员信息就同步了;
2、<div id="nav"><a href="$indexname">$bbname</a> » <a href="bee.php">自定义名字</a> </div> 为方位导航(你也可以不要这个);
3、{subtemplate XXX1}、{subtemplate XXX2}为自定义页面中部,方法同上;
4、{eval request('aaa');}为阁下在后台所添加的主题列表或主题附件;
5、{subtemplate footer}为页面脚部,支持自定义页脚。
下来我们要做的就是在菜单导航条上添加自定义页面的连接了,方法论坛上有,我就不重复了。
三、利用其他的CMS系统生成htm页面让DZ论坛加载运行(前提是CMS与论坛安装在同一空间)。演示站点:www.cjbee.cn
如果你有CMS系统安装在与论坛同一空间目录下,想在论坛的页面边栏上加载CMS生成的htm页面(例如最新文章、热门点击等),可以用JS方法调用,但是不利于收录。所以我们得在后台把最新文章、热门点击等生成“自定义页面”htm文件,这样调用就利于收录了。这里我拿动易SiteWeaver的在栏目主题列表页面的forumdisplay.php来演示:
在动易后台:系统设置->自定义页面管理->添加自定义页面,页面路径:/templates/default/ ;文件名称:cjbee.htm;页面内容:6.1版的:- <div class="box">
- <H4>最新文章</H4><div style="margin: 5px;">
- {$GetArticleList....)}</div></div>
复制代码 7.0版的- <hr class="shadowline"/><div class="sidebox">
- <h4>最新文章</h4>
- {$GetArticleList...}
- </div>
复制代码 在边栏最上面显示的就把<hr class="shadowline"/>放在</div>后面;
{$GetArticleList.....}为阁下所调用CMS的内容,注意代码里不要<!--和--> CMS后台添加代码后鼠标不要在编辑栏里点击,这样CMS又会自动添加“<-- -->”的。
6.1版本的添加方法:在templates/default/forumdisplay.htm里找到- {eval request($infosidestatus, 1, 0);}
复制代码 添加代码: {subtemplate cjbee} ,在其后面为边栏下面显示;在其前面则是边栏上面显示,红色部分为阁下后台所生成的文件名。
7.0版本的添加方法:添加代码: {subtemplate cjbee} 。在templates/default/forumdisplay.htm里找到{eval request($infosidestatus, 1, 0);}其下面有</div><!--{/if}-->,在<!--{/if}-->后面添加为最下面显示;再找到<!--{if $infosidestatus[0]}-->,在其前面添加则为最上面显示。
其他页面的htm加载方法以此类推,希望此办法对阁下有所帮助。
四、复制加版权方法有很多,我喜欢用JS方式,因为不影响收录。使用范围:任何网站。演示站点:www.cjbee.cn
现介绍JS方式的,此方法适合任何网站;用此方法后,在IE下复制时只能复制网页文字,不带网页的表格、图片等格式。
1、复制后只在最后一段另起一行加来源地址,代码:- <script language="javascript">
- document.body.oncopy=function(){
- event.returnValue=false;
- var t=document.selection.createRange().text;
- var s="来自{$bbname},原文:"+location.href;
- clipboardData.setData('Text',t+'\r\n'+s);
- }
- </script>
复制代码 这个很一般,呵呵。复制时添加的原文地址为用户浏览时的地址。此代码在Firefox下无效。
2、复制后在每个段落后都加版权,在最后一段另起一行加来源地址,代码:- <script language="javascript">
- document.body.oncopy=function()
- {
- event.returnValue=false;
- var d=document.selection.createRange().text;
- d=d.replace(/\r\n/g," 文章来自{$bbname}{$boardurl}\r\n");
- if(d.charAt(d.length-1)!='\n')
- d=d+"\r\n 原文地址:"+location.href;
- clipboardData.setData("Text",d);
- }
- </script>
复制代码 感觉这个有点特别,就是版权加得太频繁了,有的人会反感的。
复制时添加的原文地址为用户浏览时的地址。此代码在Firefox下无效。
3、复制后在指定的字符后面加版权和来源地址,这个方法为变量的,只要出现第一个字符后就加版权(只加一次版权),这个方法有利也有避,如果文章中没有这个字符的话就不加版权。代码如下:- <script language="JavaScript">
- document.body.oncopy=function()
- {
- event.returnValue=false;
- var s=document.selection.createRange().text;
- y = "。";
- t = s.replace(y,"。来自{$bbname},原文地址:"+location.href);
- clipboardData.setData("Text",t);
- }
- </script>
复制代码 其中的y = "。"; 是在文章中第一个“。”后面加版权,也可以把它定为“, 、 :;?”或者任何字以及字符都可以,例如y = "我"; 那么下面的那段也对应的改为t = s.replace(y,"我 来源:{$bbname},原文地址:"+location.href); 如果不想加原文地址,只加网站名字的话,改为t = s.replace(y,"我 来自{$bbname}"); 即可;如果y = " "的话就是第一个空格后加版权。
这种方法比较隐蔽,不细心的人根本不会发现加了版权,即使是细心的人也要找一找才发现。
复制时添加的原文地址为用户浏览时的地址。此代码在Firefox下无效。
五、关于防复制的打印页面的处理:适用范围:6.1。
在打印页面下的模板是没有加版权的,我们可能有很多人用不到打印这个功能,可以删除这个功能(删不删除由你了),方法如下:
1、viewthread.htm模块里大概第78行,如果阁下修改过那就不知了,找到下面的代码,将其删除:- <a href="viewthread.php?action=printable&tid=$tid" target="_blank" <!--{if !$forum['ismoderator']}-->class="notabs"<!--{/if}-->>{lang thread_printable}</a>
复制代码 2、上面的打印连接没有了,但是在网址后输入viewthread.php?action=printable&tid=XXX(XXX为文章ID)还是会显示打印页面的,所以再找viewthread.php里大概408~410行,3行都删除掉就OK了。如果修改过的请找到代码:- elseif($action == 'printable' && $tid) {
- require_once DISCUZ_ROOT.'./include/printable.inc.php';
- }
复制代码 将上面代码删除掉就好了。
六、给页面添加繁体和简体互转功能(适合任何网站):演示站点:www.cjbee.cn
当我发现有不少台湾同胞浏览鄙人小站时都要用Google的繁体转换功能,比较麻烦。故此就利用动易SiteWeaver6.6的繁简体转换功能,测试了一下,在DZ论坛也能用。方法如下:
1、需要转换繁体的页面加入代码:- <a href="#" id="StranLink">繁体中文</a><script language='javascript' src='/js/gb_big5.js'></script>
复制代码 gb_big5.js下载地址,上传到空间,然后加载gb_big5.js即可。如果你的网页没有FTP功能那也不要急,可以找一个用动易程序的网站,在此网站下的“JS”包内应该有gb_big5.js,一般情况下很少有人删除掉的,直接加载其的gb_big5.js来为自己网站进行繁简体转换,那么加载的代码就是:- <a href="#" id="StranLink">繁体中文</a><script language='javascript' src='http://www.npsjfy.com/js/gb_big5.js'></script>
复制代码 呵呵,利用别人的东西为自己服务,有意思吧。但是千万不要让他发现,如果他发现后把这文件换成病毒就麻烦了...
此方法在Firefox下无效。
2、这方法在IE和Firefox下都有效,任何网站都能用,下载这JS后放在网站合适的地方,然后在网页中加入代码即可:- <a id="StranLink">繁體中文</a><script src="/js/gb_big5.js" type="text/javascript" language="JavaScript"></script></a>
复制代码 七、给首页每个栏目加上自定义二级栏目动态,如最新回复等功能(前提是开启横排),在后台的内部数据调用方式实现。
适用范围:6.1、7.0 。演示站点:www.cjbee.cn(这方法目前在论坛上没找到)。
6.1方法如下:
1、先在后台数据调用添加主题列表,列表名称为lb1、lb2、lb3、lb4或者其他的,有一点必须注意“lb”可以随便定名,但是后面的数字为栏目的ID号,调用数据ID也是对应的栏目;调用数据框填 {subject}<br />;调用主题标题字数最好设得合适即可22~30个左右。
2、在templates/default/discuz.htm里,找到代码:- </th>
- <!--{/loop}-->
- $cat['endrows']
复制代码 (直接查找$cat['endrows'] 得了,7.0把代码格式打乱了)在</th>前面加:{eval request('lb'.$forum['fid']);} 代码里的.$forum['fid']是栏目ID。
如果这样不美观的话就加上CSS样式,那么在其前面加的就是:- <div style="background-image: url(images/th_lb.gif);"><p style="padding-left:20px;line-height: 20px;">{eval request('lb'.$forum['fid']);}</p></div>
复制代码 th_lb.gif图片点这里右键另存为,放在images目录下。
3、打开templates\default\css_common.htm,找到.forumlist tbody th { background-image: url({IMGDIR}/forum.gif); background-repeat: no-repeat; background-position: 13px 50%; } 以及.forumlist tbody th.new { background-image: url({IMGDIR}/forum_new.gif); } 将以上两段代码删除掉。
最后找到:.forumlist th { padding-left: 55px !important; } 这个55px是二级栏目的横排方框填充左边的距离,可以改为0--20px或把这段删除。
4、如果其他风格包里的css_append.htm也有以上代码请按此方法修改;
5、后台更新CSS缓存即可看到效果。
7.0修改方法:
1、与6.1的第1点一样;
2、打开templates\default\discuz.htm,找到第二个</th>,在其前面添加的代码与6.1的一样;
3、打开templates\default\css_common.htm,删除掉:.list th.new { background-image: url({IMGDIR}/forum_new.gif); } 再把:
.list th { background: url({IMGDIR}/forum.gif) 5px 10px no-repeat; padding-left: 45px !important; } 改为:.list th{padding-left:15px !important;} 这个15px是二级栏目的横排方框填充左边的距离,可以改为0--20px或把这段删除。
4、如果其他风格包里的css_append.htm也有以上代码请按此方法修改;
5、后台更新CSS缓存即可看到效果。
同理,我们还可以调用图片附件功能,把每个栏目下帖子里的图片调到首页,代替首页栏目图片,这样首页就不在枯燥乏味了。方法如下:
1、跟6.1的第1点差不多,只不过添加的不是主题列表,而是主题附件:调用数据框填{image} ;模块名称:tp1、tp2、tp3(数字为栏目对应的ID);显示数据条数:1;图片最大宽度(像素):100;图片最大高度(像素):75(宽和高由你们定);
2、方法同上,只不过所加的代码为:- <div style="background-image: url(images/th_lb.gif);"><div style="float: left;margin-right: 5px;">{eval request('tp'.$forum['fid']);}</div><p style="padding-left:20px;line-height: 20px;">{eval request('lb'.$forum['fid']);}</p></div>
复制代码 如果觉得不美观的话,请自行在css_common.htm写写CSS,改成适合自己的样式,到这里来的大多数是站长,就不多说了,应该都知道的~~
调用图片后的连接问题:调用图片附件后,不想让其点击图片后直奔图片所属楼层ID,那么打开include/request.func.php,找到:redirect.php?goto=findpost&ptid=$data[tid]&pid=$data[pid] 改为:viewthread.php?tid=$data[tid] 这样我们点击图片时直奔主题(动静态自适应),而非图片所属楼层ID。6.1和7.0版本修改方法相同。注意,修改后论坛的所有图片附件连接地址均为改后的设置,其他附件调用不变。
这个功能的好处一是工程量不大;二是在后台就可以灵活的改变每个栏目的主题条目数、主题排序方式、主题字数等,在首页看到的主题排列就不是千篇一律的了。
注意:修改后的请给每个二级板块添加版块图标,这样打开分区大类时/index.php?gid=2等就好看些。
八、给帖子标签加上其他的搜索参数及连接;适用范围:通用版。演示站点:www.cjbee.cn
6.1修改方法:viewthread.htm里找到代码:- <!--{if $relatedkeywords}--><span class="postkeywords">$relatedkeywords</span><!--{/if}-->
- </p>
复制代码 在</p>后面添加:- <script language="JavaScript">
- var kw;
- kw="$metakeywords";
- var temp
- temp=kw.split(",")
- document.write ("<font color=red>搜本站文章:</font>");
- for(i=0;i<temp.length;i++){
- document.write("<a href=/sou.asp?search=0&match=2&searWords="+temp+">"+temp+"</a>");
- }
- document.write("");
- </script>
复制代码 7.0修改方法:viewthread_node.htm里找到代码:- <!--{if $relatedkeywords}--><span class="postkeywords">$relatedkeywords</span><!--{/if}-->
复制代码 在其下面添加的代码与6.1添加的一样。7.0如想另起一行添加的话,那么在:- <!--{if $relatedkeywords}--><span class="postkeywords">$relatedkeywords</span><!--{/if}-->
- </div>
复制代码 </div>后面添加代码:- <script language="JavaScript">
- var kw;
- kw="$metakeywords";
- var temp
- temp=kw.split(",")
- document.write ("<div class='threadtags'><font color=blue>搜索站内关于:</font>");
- for(i=0;i<temp.length;i++){
- document.write("<a href=/sou.asp?search=0&match=2&searWords="+temp+">"+temp+"</a>");
- }
- document.write("的文章</div>");
- </script>
复制代码 代码说明:
1、$metakeywords :标签TAG,如果用在其他CMS程序请改为对应的关键词标签;
2、temp=kw.split(",") 中的“,”为TAG分割符,如果用在其他CMS程序请改为对应的分割符(例如动易的关键词分割符为“|”);
3、<div class='threadtags'><font color=blue>搜本站文章:</font> 以及“的文章</div>”在TAG前面和后面所添加的文字;
4、也可以定制里面的连接样式和方式,如<a class='aaa' target='_blank' href=/sou.asp?search=......
注意:自定义内容里的代码不能有双引号 " ,只能用 '
-------------------------------------------------- |