Discuz! 官方站

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 106985|回复: 239

[插件] 首页四格_全Cache,后台控制,图片预览FOR DZ4.1(weaver2000修改,6月15重大更新)

[复制链接]
发表于 2006-5-16 12:29:38 | 显示全部楼层 |阅读模式
最后更新于2006年6月15日18:10时:修改了一下首页四格的位置,将其放在首页文字广告的下方,因为原来论坛没有放置文字广告,所以忽略了这个问题!之前安装的用户只需要重新安装第10步就可以了,代码已经更新,全新安装直接安装即可!


本贴根据帖子TOPLIST_首页四格_全Cache版FOR DZ4.1.0修改而来。

预览地址: http://xm.someweb.net/
或见附件:

插件说明:
1、增加最近比较热门的图片预览功能;
2、其他三格为:最新发表帖子,最新回复帖子,最热门帖子;
3、有升级数据库。

开始安装:
1、后台升级数据库

  1. INSERT INTO `cdb_settings` VALUES ('show_toplist', '1');
复制代码


2、编辑文件admin/setting.inc.php(后台显示功能设置内添加开关)
查找:

  1. showsetting('settings_nocacheheaders', 'settingsnew[nocacheheaders]', $settings['nocacheheaders'], 'radio');
复制代码


下面添加:

  1. showsetting('settings_show_toplist', 'settingsnew[show_toplist]', $settings['show_toplist'], 'radio');
复制代码


3、编辑语言包templates/default/admincp.lang.php(后台管理页面显示的文字)
查找:

  1. 'settings_forumjump_comment' => '选择“是”将在列表页面下部显示快捷跳转菜单。注意: 当分论坛很多时,本功能会严重加重服务器负担',
复制代码


下面添加:


  1. 'settings_show_toplist' => '显示首页四格',
  2. 'settings_show_toplist_comment' => '选则“是”将在首页显示首页四格',
复制代码


4、 include/cache.func.php
查找

  1. 'medals'        => array('medals')
复制代码


上面加

  1. 'toplist'        => array('newthread', 'newreply', 'topdigest', 'topviews'),//TOPLIST_首页四格_全Cache版_By oytktk
复制代码


继续查找

  1. case 'medals':
  2.                         $table = 'medals';
  3.                         $cols = 'medalid, name, image';
  4.                         $conditions = "WHERE available='1'";
  5.                         break;
复制代码


上面加

  1.   //首页四格TOPLIST_CACHE版, By oytktk 代码首
  2.                 case 'newthread':
  3.                         $table = 'threads t';
  4.                         $cols = 't.tid, t.fid, t.author, t.subject, t.dateline, t.lastpost, t.lastposter, t.views, t.replies, t.highlight, f.name';
  5.                         $conditions = "LEFT JOIN {$tablepre}forums f ON f.fid=t.fid WHERE t.displayorder!='-1' ORDER BY t.dateline DESC LIMIT 0, 10";
  6.                         break;

  7.                 case 'newreply':
  8.                         $table = 'threads t';
  9.                         $cols = 't.tid, t.fid, t.author, t.subject, t.dateline, t.lastpost, t.lastposter, t.views, t.replies, t.highlight, f.name';
  10.                         $conditions = "LEFT JOIN {$tablepre}forums f ON f.fid=t.fid WHERE t.replies>0 and t.displayorder!='-1'  ORDER BY t.lastpost DESC LIMIT 0, 10";
  11.                         break;
  12.                 case 'topdigest':
  13.                         $table = 'threads t';
  14.                         $cols = 't.tid, t.fid, t.author, t.subject, t.digest, t.dateline, t.lastpost, t.lastposter, t.views, t.replies, t.highlight, f.name';
  15.                         $conditions = "LEFT JOIN {$tablepre}forums f ON f.fid=t.fid WHERE digest>0 ORDER BY rand() LIMIT 0, 10";
  16.                         break;
  17.                
  18.                 case 'topviews':
  19.                         $table = 'threads t';
  20.                         $view = rand(1,3)==1 ? 'views' : 'replies';
  21.                         $cols = 't.tid, t.fid, t.author, t.subject, t.dateline, t.lastpost, t.lastposter, t.views, t.replies, t.highlight, f.name';
  22.                         $conditions = "LEFT JOIN {$tablepre}forums f ON f.fid=t.fid WHERE t.displayorder!='-1' ORDER BY t.$view DESC LIMIT 0, 10";
  23.                         break;

  24.                 //首页四格TOPLIST_CACHE版, By oytktk 代码尾
复制代码


再找:
  1. case 'settings':
  2.                         $data['qihoo_links'] = array();
  3.                         while($setting = $db->fetch_array($query))
复制代码


上面加

  1. //首页四格TOPLIST_CACHE版, By oytktk 代码首

  2.                 case 'newthread':
  3.                         $colorarray = array('', 'red', 'orange', 'yellow', 'green', 'cyan', 'blue', 'purple', 'gray');
  4.                         while($topthread = $db->fetch_array($query)) {
  5.                                 $threadcolor = sprintf('%02d', $topthread['highlight']);
  6.                                 $topthread['author'] = $topthread['author'] ? $topthread['author'] : '游客';
  7.                                 $topthread['subjectc'] = cutstr($topthread['subject'], 28);
  8.                                 $topthread['threadcolor'] = $threadcolor[1] ? " style=\"color: ".$colorarray[$threadcolor[1]]."\"" : NULL;
  9.                                 $topthread['dateline'] = gmdate("Y-m-d H:i", $topthread['dateline'] + $timeoffset * 3600);
  10.                                 $topthread['lastpost'] = gmdate("Y-m-d H:i", $topthread['lastpost'] + $timeoffset * 3600);
  11.                                 $topthread['name'] =  AddSlashes(strip_tags(trim($topthread['name'])));
  12.                                 $data[] = $topthread;
  13.                         }
  14.                         break;

  15.                 case 'newreply':
  16.                         $colorarray = array('', 'red', 'orange', 'yellow', 'green', 'cyan', 'blue', 'purple', 'gray');
  17.                         while($topthread = $db->fetch_array($query)) {
  18.                                 $threadcolor = sprintf('%02d', $topthread['highlight']);
  19.                                 $topthread['author'] = $topthread['author'] ? $topthread['author'] : '游客';
  20.                                 $topthread['subjectc'] = cutstr($topthread['subject'], 26);
  21.                                 $topthread['threadcolor'] = $threadcolor[1] ? " style=\"color: ".$colorarray[$threadcolor[1]]."\"" : NULL;
  22.                                 $topthread['dateline'] = gmdate("Y-m-d H:i", $topthread['dateline'] + $timeoffset * 3600);
  23.                                 $topthread['lastpost'] = gmdate("Y-m-d H:i", $topthread['lastpost'] + $timeoffset * 3600);
  24.                                 $topthread['name'] =  AddSlashes(strip_tags(trim($topthread['name'])));
  25.                                 $data[] = $topthread;
  26.                         }
  27.                         break;

  28.                 case 'topdigest':
  29.                         $colorarray = array('', 'red', 'orange', 'yellow', 'green', 'cyan', 'blue', 'purple', 'gray');
  30.                         while($topthread = $db->fetch_array($query)) {
  31.                                 $threadcolor = sprintf('%02d', $topthread['highlight']);
  32.                                 $digest = array('1'=>'[Ⅰ]','2'=>'[Ⅱ]','3'=>'[Ⅲ]');
  33.                                 $topthread['subjectc'] = $digest[$topthread['digest']]."-".cutstr($topthread['subject'], 23);
  34.                                 $topthread['author'] = $topthread['author'] ? $topthread['author'] : '游客';
  35.                                 $topthread['threadcolor'] = $threadcolor[1] ? " style=\"color: ".$colorarray[$threadcolor[1]]."\"" : NULL;
  36.                                 $topthread['dateline'] = gmdate("Y-m-d H:i", $topthread['dateline'] + $timeoffset * 3600);
  37.                                 $topthread['lastpost'] = gmdate("Y-m-d H:i", $topthread['lastpost'] + $timeoffset * 3600);
  38.                                 $topthread['name'] =  AddSlashes(strip_tags(trim($topthread['name'])));
  39.                                 $data[] = $topthread;
  40.                         }
  41.                         break;

  42.                 case 'topviews':
  43.                         $colorarray = array('', 'red', 'orange', 'yellow', 'green', 'cyan', 'blue', 'purple', 'gray');
  44.                         while($topthread = $db->fetch_array($query)) {
  45.                                 $threadcolor = sprintf('%02d', $topthread['highlight']);
  46.                                 $topthread['subjectc'] = cutstr($topthread['subject'], 32);
  47.                                 $topthread['threadcolor'] = $threadcolor[1] ? " style=\"color: ".$colorarray[$threadcolor[1]]."\"" : NULL;
  48.                                 $topthread['author'] = $topthread['author'] ? $topthread['author'] : '游客';
  49.                                 $topthread['dateline'] = gmdate("Y-m-d H:i", $topthread['dateline'] + $timeoffset * 3600);
  50.                                 $topthread['lastpost'] = gmdate("Y-m-d H:i", $topthread['lastpost'] + $timeoffset * 3600);
  51.                                 $topthread['name'] =  AddSlashes(strip_tags(trim($topthread['name'])));
  52.                                 $data[] = $topthread;
  53.                         }
  54.                         break;


  55.                 //首页四格TOPLIST_CACHE版, By oytktk 代码尾
复制代码


5、 include/newthread.inc.php
查找

  1. updatepostcredits('+', $discuz_uid, $postcredits);
复制代码


下面加

  1. require_once DISCUZ_ROOT.'./include/cache.func.php';
  2.                 updatecache('newthread');
复制代码


6、 include/newreply.inc.php
查找

  1. updatepostcredits('+', $discuz_uid, $replycredits);
复制代码


下面加

  1.   require_once DISCUZ_ROOT.'./include/cache.func.php';
  2.                 updatecache('newthread');
复制代码


7、include/editpost.inc.php
查找

  1. updatepostcredits('-', $orig['authorid'], ($isfirstpost ? $postcredits : $replycredits));
复制代码


下面加

  1.    require_once DISCUZ_ROOT.'./include/cache.func.php';
  2.                 updatecache('newthread');
复制代码


8、index.php
查找

  1. $forumlist = $catforumlist = $forums = $catforums = $categories = $collapse = array();
复制代码


下面加

  1. //首页四格TOPLIST_CACHE版, By oytktk 代码首
  2.         if(!isset($_COOKIE['discuz_collapse']) || strpos($_COOKIE['discuz_collapse'], 'category_hk2 ') === FALSE) {
  3.                 $categorys_hk2 = 'collapsed_no.gif';
  4.                 $collapse['category_hk2'] = '';
  5.         } else {
  6.                 $categorys_hk2 = 'collapsed_yes.gif';
  7.                 $collapse['category_hk2'] = 'display: none';
  8.         }
  9.         
  10.         if($categorys_hk2 == 'collapsed_no.gif'){
  11.         require_once DISCUZ_ROOT.'./forumdata/cache/cache_toplist.php';
  12.         $toplistloop = $_DCACHE['newthread'];
  13.         }
  14.         //首页四格TOPLIST_CACHE版, By oytktk 代码尾
复制代码


9、topicadmin.php
查找

  1. showmessage((isset($resultarray['message']) ? $resultarray['message'] : 'admin_succeed'),
复制代码


上面加

  1.   require_once DISCUZ_ROOT.'./include/cache.func.php';
  2.         updatecache('newthread');
复制代码


10、templates/default/index.htm
查找


  1. <!--{if !empty($advlist['text'])}--><div class="maintable"><table cellspacing="{INNERBORDERWIDTH}" cellpadding="{TABLESPACE}" width="{TABLEWIDTH}" align="center" class="tableborder">$advlist[text]</table><br></div><!--{/if}-->
复制代码


在下面加


  1. <!--{if empty($gid)}-->
  2. <!--{if $show_toplist}-->
  3. <div class="maintable">
  4. {template toplist}
  5. <br>
  6. </div>
  7. <!--{/if}-->
  8. <!--{/if}-->
复制代码


11、下载附件toplist.rar上传至相应的目录内即可!其中topview文件夹上传至论坛跟目录,toplist.htm文件上传至templates/default

12、到后台更新缓存(务必!!!)

其他需要自己再做些修改,自己设置吧!!

注意:预览的图片经本人只测试了支持.jpg格式,不支持.gif格式!

13、一些供选择的小修改:

⑴、需要缩放按钮的朋友修改以下地方:
在toplist.htm里面查找

  1. <td colspan="4" align="center" class="header">
复制代码


后面加

  1. <p align="left"><a href="index.php" onclick="toggle_collapse

  2. ('category_hk2');"><img id="category_hk2_img" src="{IMGDIR}/$categorys_hk2" align="right" border="0"></a>
复制代码


⑵、如果想每个格子里面显示的条数为自己设定值得话,请修改如下地方:(前提是步骤12以前都已经完成)
打开include/cache.func.php
查找

  1. $conditions = "LEFT JOIN {$tablepre}forums f ON f.fid=t.fid WHERE t.displayorder!='-1' ORDER BY t.dateline DESC LIMIT 0, 10";
复制代码

  1. $conditions = "LEFT JOIN {$tablepre}forums f ON f.fid=t.fid WHERE t.replies>0 and t.displayorder!='-1'  ORDER BY t.lastpost DESC LIMIT 0, 10";
复制代码

  1. $conditions = "LEFT JOIN {$tablepre}forums f ON f.fid=t.fid WHERE digest>0 ORDER BY rand() LIMIT 0, 10";
复制代码

  1. $conditions = "LEFT JOIN {$tablepre}forums f ON f.fid=t.fid WHERE t.displayorder!='-1' ORDER BY t.$view DESC LIMIT 0, 10";
复制代码


分别将里面的

  1. 10
复制代码


替换成你想要数字(即显示的条数)。

如果不想显示某个子板块的帖子:

可以在cache.func.php里面把新加入的那段代码中4个ORDER BY前全部加上and f.fid!=''(引号里是隐藏帖子所在论坛的fid号,例如:and f.fid!='3')更新缓存就行了.


他人提供,本人未作测试,自己试试看吧!!!

[ 本帖最后由 weaver2000 于 2006-6-15 11:27 编辑 ]

本帖子中包含更多资源

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

x

评分

1

查看全部评分

 楼主| 发表于 2006-5-16 12:30:05 | 显示全部楼层

回帖主要问题答疑:
1、"后台控制"功能在何处?
答:“后台控制”开关功能在“论坛功能”下!

2、图片那一格替换在后台也可以控制吗?
答:无此功能!

3、我试一下 是不是用了论坛就很慢了
答:采用全cache,对论坛速度没有影响,至少我的测试是这样的。

4、四格中的几张图片是随机自动刷新的?还是本来就这几张?要手动更新?
答:四格中的图片不具有自动刷新功能,需要你手动更新,具体更新在topview下的topview.js里更改,逐一对应的手动输入图片地址、链接和标题!如果不手动更新,那么就会一直显示这几张图片!

5、如何去掉滚动条的方法!
答:出现滚动条主要是由于不同风格之间的表格宽度不同引起的,有的风格表格宽度不够,致使每条帖子主题占用两行的空间,就会出现滚动条,修改方法:
在第四步的最后一步添加的代码中有这么一句:

  1. $topthread['subjectc'] = cutstr($topthread['subject'], 28);
复制代码

其中的28为帖子主题显示的字数,相应的改小就可以了,具体改为多少,请自己调试!!!


[ 本帖最后由 weaver2000 于 2006-5-24 17:56 编辑 ]
回复

使用道具 举报

发表于 2006-5-16 12:32:46 | 显示全部楼层
大家都很喜欢四格么?
回复

使用道具 举报

发表于 2006-5-16 12:35:48 | 显示全部楼层
我不用..但是支持
回复

使用道具 举报

 楼主| 发表于 2006-5-16 12:38:12 | 显示全部楼层
原帖由 聿歆 于 2006-5-16 12:35 发表
我不用..但是支持


谢谢楼上的支持!!!
回复

使用道具 举报

发表于 2006-5-16 12:57:31 | 显示全部楼层
支持 准备用了
回复

使用道具 举报

发表于 2006-5-16 13:02:09 | 显示全部楼层
支持了
回复

使用道具 举报

发表于 2006-5-16 13:17:21 | 显示全部楼层
我试一下 是不是用了论坛就很慢了
回复

使用道具 举报

发表于 2006-5-16 13:49:10 | 显示全部楼层
图片那一格替换在后台也可以控制吗?
回复

使用道具 举报

发表于 2006-5-16 13:50:23 | 显示全部楼层
好东西  先日了再看
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|Comsenz ( 粤B2-20090059-165 )star

GMT+8, 2019-9-20 05:21

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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