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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

仿D4折叠(贴子列表内在线显示)(贴子内在线浏览)(本版规则)for d2.5

[复制链接]
beecheung 发表于 2005-9-7 19:55:03 | 显示全部楼层 |阅读模式
===============================
声明:3.0出来了,本插件不再提供技术支持,望谅解.
              2005.11.26 by beecheung
===============================



作者:beecheung
最后更新:2005/09/09 8:15    修正浏览贴子中用户组图例显示错误


名称:仿D4折叠论坛列表中的在线显示,折叠贴子内在线浏览显示,折叠本版规则
演示:http://libr.hunau.net/forum
说明:
1,三者之间不会有冲突,比如收了这个,那个也跟着收,缩了这个,另一个也跟着缩;
2,无需先安装其他折叠,比如折叠首页论坛,在线用户和联盟,如果需要,到这里查看方法;
3,采用cookies缓存,折叠后刷新不影响折叠,在d2.5sp1和园园美化版上测试有效.


1 收缩论坛列表中的在线显示

../include/common.js
在适当地方加入如下代码(如果有了,不必再加了):

  1. function toggle_collapse(objname) {
  2.         obj = findobj(objname);
  3.         img = findobj(objname+"_img");
  4.         collapsed = getcookie("discuz_collapse");
  5.         cookie_start = collapsed ? collapsed.indexOf(objname) : -1;
  6.         cookie_end = cookie_start + objname.length + 1;

  7.         if(obj.style.display == "none") {
  8.                 obj.style.display = "";
  9.                 img_re = new RegExp("_yes\\.gif$");
  10.                 img.src = img.src.replace(img_re, '_no.gif');
  11.                 if(cookie_start != -1) collapsed = collapsed.substring(0, cookie_start) + collapsed.substring(cookie_end, collapsed.length);
  12.         } else {
  13.                 obj.style.display = "none";
  14.                 img_re = new RegExp("_no\\.gif$");
  15.                 img.src = img.src.replace(img_re, '_yes.gif');
  16.                 if(cookie_start == -1) collapsed = collapsed + objname + " ";
  17.         }

  18.         expires = new Date();
  19.         expires.setTime(expires.getTime() + (collapsed ? 86400 * 30 : -(86400 * 30 * 1000)));
  20.         document.cookie = "discuz_collapse=" + escape(collapsed) + "; expires=" + expires.toGMTString() + "; path=/";
  21. }

  22. function imgzoom(o){
  23.         if(event.ctrlKey) {
  24.                 var zoom = parseInt(o.style.zoom, 10) || 100;
  25.                 zoom -= event.wheelDelta / 12;
  26.                 if(zoom > 0) {
  27.                         o.style.zoom = zoom + '%';
  28.                 }
  29.                 return false;
  30.         } else {
  31.                 return true;
  32.         }
  33. }

  34. function getcookie(name) {
  35.         var cookie_start = document.cookie.indexOf(name);
  36.         var cookie_end = document.cookie.indexOf(";", cookie_start);
  37.         return cookie_start == -1 ? '' : unescape(document.cookie.substring(cookie_start + name.length + 1, (cookie_end > cookie_start ? cookie_end : document.cookie.length)));
  38. }
复制代码


forumdisplay.php

查找:

  1. if($forum['viewperm'] && !strstr($forum['viewperm'], "\t$groupid\t") && !$forum['allowview']) {
复制代码


在上面加:

  1. if($whosonlinestatus) {
  2.         if(empty($_COOKIE['discuz_collapse']) || strpos($_COOKIE['discuz_collapse'], 'online_'.$forum['fid'].' ') === FALSE) {
  3.                                 $onlinecollapseimg = 'collapsed_no.gif';
  4.                                 $collapseonline = '';
  5.         } else {
  6.                                 $onlinecollapseimg = 'collapsed_yes.gif';
  7.                                 $collapseonline = 'display: none';
  8.         }
  9.         $whosonlinestatus = nl2br($whosonlinestatus);
  10. }
复制代码



forumdisplay.htm

查找:

  1. <!--{if $whosonlinestatus}-->
  2.         <table border="0" cellspacing="0" cellpadding="0" width="{TABLEWIDTH}" align="center" class="tableborder">
  3.         <tr><td>
  4.         <table border="0" cellspacing="{BORDERWIDTH}" cellpadding="{TABLESPACE}" width="100%">
  5.         <tr class="header"><td width="80%">{lang forum_activeusers}</td>
  6.         <td align="center" nowrap><a href="javascript:this.location.reload();" style="color: {HEADERTEXT}; font-weight: normal">{lang refresh}</a></td>
  7.         <td align="center" nowrap><a href="forumdisplay.php?fid=$fid&page=$page&showoldetails=no" style="color: {HEADERTEXT}; font-weight: normal">{lang index_hideonlinedetails}</a></td>
  8.         </tr>

  9.         <tr><td bgcolor="{ALTBG2}" colspan="3" onMouseOver ="this.style.backgroundColor='{ALTBG1}'" onMouseOut ="this.style.backgroundColor='{ALTBG2}'">
  10.         <table cellspacing="0" cellpadding="0" border="0" width="98%" align="center">

  11.         <tr><td nowrap>
  12.         <!--{loop $whosonline $key $online}-->
  13.                 <!--{if $key % 7 == 0}--></td></tr><tr><td width="15%" nowrap><!--{else}--></td><td width="15%" nowrap><!--{/if}-->
  14.                 <img src="images/common/$online[icon]" align="absmiddle">
  15.                 <a href="viewpro.php?uid=$online[uid]" title="{lang time}: $online[lastactivity]{LF}
  16.                 {lang action}: $online[action]{LF}
  17.                 {lang forum}: $forumname">$online[username]</a>
  18.         <!--{/loop}-->
  19.         </td></tr></table></td></tr>
  20.         </table></td></tr></table>
  21. <br>
  22. <!--{/if}-->
复制代码



替换为:(如果要像现在的D4官方那样,就把这段放到快速回复的下面)

  1. <!--{if $whosonlinestatus}-->
  2.         <table border="0" cellspacing="0" cellpadding="0" width="{TABLEWIDTH}" align="center" class="tableborder">
  3.         <tr><td>
  4.         <table border="0" cellspacing="{BORDERWIDTH}" cellpadding="{TABLESPACE}" width="100%">
  5.     <tr class="header"><td><a href="###" onclick="toggle_collapse('online_$fid');"><img id="online_{$fid}_img" src="{IMGDIR}/$onlinecollapseimg" align="right" border="0"></a>{lang forum_activeusers}</td></tr>
  6.     <tbody id="online_$fid" style="$collapseonline">
  7.     <tr><td bgcolor="{ALTBG2}" colspan="2" onMouseOver ="this.style.backgroundColor='{ALTBG1}'" onMouseOut ="this.style.backgroundColor='{ALTBG2}'">
  8.         <table cellspacing="0" cellpadding="0" border="0" width="98%" align="center">
  9.         <tr><td nowrap>
  10.         <!--{loop $whosonline $key $online}-->
  11.                 <!--{if $key % 7 == 0}--></td></tr><tr><td width="15%" nowrap><!--{else}--></td><td width="15%" nowrap><!--{/if}-->
  12.                 <img src="images/common/$online[icon]" align="absmiddle">
  13.                 <a href="viewpro.php?uid=$online[uid]" title="{lang time}: $online[lastactivity]{LF}
  14.                 {lang action}: $online[action]{LF}
  15.                 {lang forum}: $forumname">$online[username]</a>
  16.         <!--{/loop}-->
  17.         </td></tr></table></td></tr>
  18.         </table></td></tr></table>
  19. <br>
  20. <!--{/if}-->
复制代码

  
  

2 收缩贴子内在线浏览显示

前提:安装了oytktk(靖飒)
的贴子里显示正在阅读此贴的会员[后台控制] For D2.5
我在这里加入了会员动作、时间显示,并显示用户组图例。
viewthread.php

查找:

  1. $query = $db->query("SELECT username FROM $table_sessions WHERE tid='$tid' AND invisible='0' AND uid>'0'");
  2.                 if($db->num_rows($query)) {
  3.                         $whosonlinestatus = 1;
  4.                         while($online = $db->fetch_array($query)) {
  5.                                 $readsome=1;
  6.                                 $whosonline[] = $online;     
  7.                         }
  8.                 }
复制代码


替换为:

              
  1. $query = $db->query("SELECT uid, groupid, username, invisible, lastactivity, action FROM $table_sessions WHERE tid='$tid' AND invisible='0' AND uid>'0'");
  2.                 if($db->num_rows($query)) {
  3.                         $whosonlinestatus = 1;
  4.                         while($online = $db->fetch_array($query)) {
  5.                 $online['icon'] = isset($_DCACHE['onlinelist'][$online['groupid']]) ? $_DCACHE['onlinelist'][$online['groupid']] : $_DCACHE['onlinelist'][0];
  6. if ($online['groupid'] == 1 ){
  7. $online['icon'] = 'online_admin.gif';
  8. } elseif ($online['groupid'] == 2 ) {
  9. $online['icon'] = 'online_supermod.gif';
  10. } elseif ($online['groupid'] == 3 ) {
  11. $online['icon'] = 'online_moderator.gif';
  12. }
  13. //如果自建了特殊用户组,加入下面这一段,16是我建的VIP组的组ID,这个数字可在phpmyadmin中查到
  14. elseif ($online['groupid'] == 16 ) {
  15. $online['icon'] = 'online_vip.gif';
  16. }
  17. //如果自建了特殊用户组,加入上面这一段,16是我建的VIP组的组ID,这个数字可在phpmyadmin中查到
  18. else  {
  19. $online['icon'] = 'online_member.gif';
  20. }        
  21.                                 $online['action'] = $actioncode[$online['action']];
  22.                                 $online['lastactivity'] = gmdate($timeformat, $online['lastactivity'] + ($timeoffset * 3600));
  23.                                                                 $readsome=1;
  24.                                 $whosonline[] = $online;     
  25.                         }
  26.                 }
复制代码



再查找:

  1. if($readuseron == 1) {
复制代码


在上面加:

  1. if($readuseron) {
  2.         if(empty($_COOKIE['discuz_collapse']) || strpos($_COOKIE['discuz_collapse'], 'read_'.$forum['fid'].' ') === FALSE) {
  3.                                 $readcollapseimg = 'collapsed_no.gif';
  4.                                 $collapseread = '';
  5.         } else {
  6.                                 $readcollapseimg = 'collapsed_yes.gif';
  7.                                 $collapseread = 'display: none';
  8.         }
  9.         $readuseron = nl2br($readuseron);
  10. }
复制代码


viewthread.htm

查找:

  1. <!--{if $readuseron}-->
  2. ...

  3. <!--{/if}-->
复制代码


将这段替换为:

  1. <!--{if $readuseron}-->
  2.         <table border="0" cellspacing="{BORDERWIDTH}" cellpadding="{TABLESPACE}" width="{TABLEWIDTH}" align="center" class="tableborder"  bgcolor="{BORDERCOLOR}">
  3.     <tr class="header"><td><a href="###" onclick="toggle_collapse('read_$fid');"><img id="read_{$fid}_img" src="{IMGDIR}/$readcollapseimg" align="right" border="0"></a>正在浏览此贴的会员</td></tr>
  4.     <tbody id="read_$fid" style="$collapseread">
  5.         <tr><td bgcolor="{ALTBG2}" colspan="2" onMouseOver ="this.style.backgroundColor='{ALTBG1}'" onMouseOut ="this.style.backgroundColor='{ALTBG2}'">
  6.                         <table cellspacing="0" cellpadding="0" border="0" width="98%" align="center">
  7.         <tr><td nowrap>
  8.                 <!--{if $readsome }-->
  9.         <!--{loop $whosonline $key $online}-->
  10.                 <!--{if $key % 7 == 0}--></td></tr><tr><td width="15%" nowrap><!--{else}--></td><td width="15%" nowrap><!--{/if}-->
  11. <img src="images/common/$online[icon]" align="absmiddle">               
  12. <a href="viewpro.php?uid=$online[uid]" title="{lang time}: $online[lastactivity]{LF}
  13.                 {lang action}: $online[action]{LF}
  14.                 {lang forum}: $forumname">$online[username]</a>
  15.         <!--{/loop}-->
  16.                 <!--{else}-->
  17.                 只有游客或隐身会员正在浏览本贴!
  18.                 <!--{/if}-->
  19.         </td></tr></table>
  20.                 </td></tr></td></tr>
  21. </td></tr></tbody></table>
  22.         <br>
  23. <!--{/if}-->
复制代码

  



3 收缩本版规则
前提:安装了本版规则插件

forumdisplay.php

查找:

  1. if($forum['password'] && $action == 'pwverify') {
  2.         if($pw != $forum['password']) {
  3.                 showmessage('forum_passwd_incorrect', NULL, 'HALTED');
  4.         } else {
  5.                 setcookie("fidpw$fid", $pw, 0, $cookiepath, $cookiedomain);
  6.                 showmessage('forum_passwd_correct', "forumdisplay.php?fid=$fid");
  7.         }
  8. }
复制代码


在下面加入(如果有了就不用加了):

  1. if($forum['cntwrules']) {
  2.         if(empty($_COOKIE['discuz_collapse']) || strpos($_COOKIE['discuz_collapse'], 'rules_'.$forum['fid'].' ') === FALSE) {
  3.                 $rulescollapseimg = 'collapsed_no.gif';
  4.                 $collapserules = '';
  5.         } else {
  6.                 $rulescollapseimg = 'collapsed_yes.gif';
  7.                 $collapserules = 'display: none';
  8.         }
  9.         $forum['cntwrules'] = nl2br($forum['cntwrules']);
  10. }
复制代码


forumdisplay.htm

  1. <!--{if !empty($forum[cntwrules])}-->
  2. ...
  3. <!--{/if}-->
复制代码


将这一段替换为:

  1. <!--{if !empty($forum[cntwrules])}-->
  2.         <table border="0" cellspacing="{BORDERWIDTH}" cellpadding="{TABLESPACE}" width="{TABLEWIDTH}" align="center" class="tableborder" bgcolor="{BORDERCOLOR}">
  3.         <tr class="header"><td><a href="###" onclick="toggle_collapse('rules_$fid');"><img id="rules_{$fid}_img" src="{IMGDIR}/$rulescollapseimg" align="right" border="0"></a>{lang forum_rules}</td></tr>
  4.         <tbody id="rules_$fid" style="$collapserules">
  5.         <tr><td bgcolor="{ALTBG2}" colspan="2" onMouseOver ="this.style.backgroundColor='{ALTBG1}'" onMouseOut ="this.style.backgroundColor='{ALTBG2}'">$forum[cntwrules]</td></tr>
  6.         </tbody></table><br>
  7. <!--{/if}-->
复制代码

  


最后,把这两张小图标放入.\images\模版名\  下.



这两个收缩和展开的按纽,根据风格不同,可以自己换换,我这里还有两组,看大家喜不喜欢.

[ 本帖最后由 beecheung 于 2005-11-26 09:54 编辑 ]

本帖子中包含更多资源

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

x
 楼主| beecheung 发表于 2005-9-7 20:00:51 | 显示全部楼层
难道早有了,没有人顶呀.
回复

使用道具 举报

xmzyy 发表于 2005-9-7 20:11:09 | 显示全部楼层
沙发支持
回复

使用道具 举报

 楼主| beecheung 发表于 2005-9-7 21:17:28 | 显示全部楼层
原帖由 xmzyy 于 2005-9-7 20:11 发表
沙发支持

回复

使用道具 举报

 楼主| beecheung 发表于 2005-9-7 22:42:08 | 显示全部楼层
唉,没人顶的贴子真可怜..
回复

使用道具 举报

freddy 发表于 2005-9-7 22:53:49 | 显示全部楼层
我测测看~没问题就加精了!
回复

使用道具 举报

 楼主| beecheung 发表于 2005-9-7 23:17:44 | 显示全部楼层
原帖由 freddy 于 2005-9-7 22:53 发表
我测测看~没问题就加精了!

测试怎么样了
回复

使用道具 举报

 楼主| beecheung 发表于 2005-9-7 23:27:35 | 显示全部楼层
睡觉了, 测试有什么问题明天再说了.

不过应该没什么问题了
回复

使用道具 举报

discuzking 发表于 2005-9-8 20:56:21 | 显示全部楼层
冒险也要一顶
回复

使用道具 举报

freddy 发表于 2005-9-8 20:57:36 | 显示全部楼层
现在我开始测试!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-21 23:26 , Processed in 0.028004 second(s), 3 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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