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

 找回密码
 立即注册
搜索

[修改] 二次修改Discuz 首页多格插件_首页N格插件 实现真正的首页N格,首页多标签。

[复制链接]
雏鹰网络 发表于 2012-10-26 22:03:44 | 显示全部楼层 |阅读模式
本帖最后由 雏鹰网络 于 2012-10-26 22:10 编辑

鄙视看帖不回帖的人,鄙视伸手党!!

经测试,其他插件的都只能显示4格,或者4个标签式!经修改后,只要计算机分辨率够大,就可以无限添加多个标签及多格显示内容!
多格修改方式与标签式修改同样的道理修改!



一直想改一个首页多格插件,翻阅蛮多的Discuz! X* 插件

其实是首页四格的插件,最多就显示五格内容(含图片轮播)来个插图(图取自Discuz官方):
1.jpg


2.jpg


这就是原插件的效果,经修改自本站效果如下:
3.jpg






来认识一下插件核心文件列表:
  • xshow.func.php
    核心文件、函数功能
  • xshow.class.php
    核心文件、分类功能(即每个格子的功能实现)
  • discuz_plugin_kk_xshow_TC_UTF8.xml
  • discuz_plugin_kk_xshow_SC_UTF8.xml
  • discuz_plugin_kk_xshow_SC_GBK.xml
    三个文件均属安装时所选的编码,在后台显示控制功能
  • template
    模板风格文件夹,即切换成标签式或多格式的模板
    • xshow.htm
      默认首页多格风格模板
    • xshow_tab.htm
      切换标签式多格模板



在这里我只说怎么改多标签式的插件,多格的我就不说了……多格不适合我做测试!
正常来访问论坛的,设置的论坛是窄版,所以默认的分辨率是1024*768。多格就不适合修改了~
至于多标签式的,多标签式的话,论坛如果设置为宽版的,那么这个最适合不过了~



一、xshow.class.php 修改显示标签数量

实现获取指定版块最新帖子功能:
xshow_class.php
注意该代码,在xshow_class.php文件中46 - 63行代码开始
  1.                         $row_num = 5;
  2.                         $td_star_row = '13%';
  3.                         !$pic_on && $row_num--;
  4.                         $kk_xshow['five_list'] && $row_num--;
  5.                         if($row_num == 5) {
  6.                                 $td_row = '21%';
  7.                         } elseif($row_num == 4 && $pic_on) {
  8.                                 $td_row = '25%';
  9.                         } elseif($row_num == 4 && !$pic_on) {
  10.                                 $td_row = '29%';
  11.                         } elseif($row_num == 3) {
  12.                                 $td_row = '33%';
  13.                         }
  14.                         if($kk_xshow['five_list']) {
  15.                                 $tab_num = 3;
  16.                         } else {
  17.                                 $tab_num = 4;
  18.                         }
复制代码
解释一下重要代码:
$row_num = 5; //首页多格部分代码,显示五个格子来分别显示图片、最新帖子、回复、热帖、会员
$td_row = "21%";
$td_row = "25%";
#td_row = "29%";
$td_row = "33%";

这些都是默认显示的首页四格的大小比例~ 分别是这样。
这些都不重要,重要的是下面改的一个数字。因为我做的是多标签式的首页多格~ 所以上面的代码跟我没关系。

看代码:
  1.                         if($kk_xshow['five_list']) {
  2.                                 $tab_num = 3;
  3.                         } else {
  4.                                 $tab_num = 4;
  5.                         }
复制代码
这几行代码才是重要地方。。
先看代码if 如果……如果切换到标签式首页多格则按下面参数显示……
$tab_num = 3; //这行代码说实话我一直没理解3是代表的是什么意思,所以我没深入理解这行代码,只改了下面那个。
$tab_num = 4: //这行代码理解为要显示的标签有多少个标签,写 4 则代表显示四个标签
//四个标签分别为:最新帖子,最新回复,本周热门,新会员。
//!!!不过我很不理解上面 3 到底是什么意思,其实新会员可以切换到下列显示的,但是没有这样做……
//不要纠结了,记得修改第二行的 4 用来显示你需要显示多少个标签功能即可。


这里说的很纠结……嗯,当时理解的时候到现在记得不太清楚,都好几个月了……
或者这两个选择的意思是:
在后台设置中有一项:

4.jpg

假如是横排显示,那么 $tab_num = 3;就生效了吧,只显示:最新帖子,最新回复,本周热门 这三个标签浏览。
但如果是竖排显示呢?那么应该就是 $tab_num = 4;就生效了,就会显示:最新帖子,最新回复,本周热门,新会员 这四个标签了吧。



二、xshow.class.php 修改添加缓存数组

来看新一段代码:
  1.                         require_once libfile('function/cache');
  2.                         require_once DISCUZ_ROOT.'./source/plugin/kk_xshow/xshow.func.php';
  3.                         $cache_array = array(
  4.                                 5 => 'image',
  5.                                 2 => 'thread',
  6.                                 0 => 'reply',
  7.                                 1 => '4th',
  8.                                 3 =>'user'
  9.                         );
  10.                         foreach($cache_array as $time => $cache) {
  11.                                 $cache_file = DISCUZ_ROOT.'./data/cache/cache_kk_xshow_'.$cache.'.php';
  12.                                 if(($_G['timestamp'] - @filemtime($cache_file)) > ($kk_xshow['cache_time'] + $time)) {
  13.                                         $a = 'update_'.$cache;
  14.                                         $this->$a();
  15.                                 }
  16.                         }
  17.                         
  18.                         @include_once DISCUZ_ROOT.'./data/cache/cache_kk_xshow_image.php';
  19.                         @include_once DISCUZ_ROOT.'./data/cache/cache_kk_xshow_thread.php';
  20.                         @include_once DISCUZ_ROOT.'./data/cache/cache_kk_xshow_reply.php';
  21.                         @include_once DISCUZ_ROOT.'./data/cache/cache_kk_xshow_4th.php';
  22.                         @include_once DISCUZ_ROOT.'./data/cache/cache_kk_xshow_user.php';
复制代码
该代码是插件的缓存文件。添加新标签功能时必须要添加生成缓存文件
  1.                         require_once libfile('function/cache');
  2.                         require_once DISCUZ_ROOT.'./source/plugin/kk_xshow/xshow.func.php';
  3.                         $cache_array = array(
  4.                                 5 => 'image',
  5.                                 2 => 'thread',
  6.                                 0 => 'reply',
  7.                                 1 => '4th',
  8.                                 3 =>'user'
复制代码
添加缓存数组名称,例如我需要添加新手综合,那么我添加一个数组,名称我就命名为:novice
修改一下代码为:
  1.                         require_once libfile('function/cache');
  2.                         require_once DISCUZ_ROOT.'./source/plugin/kk_xshow/xshow.func.php';
  3.                         $cache_array = array(
  4.                                 5 => 'image',
  5.                                 2 => 'thread',
  6.                                 0 => 'reply',
  7.                                 1 => '4th',
  8.                                 6 => 'novice',   //新添加数组名称
  9.                                 3 =>'user'
复制代码
三、xshow.class.php 添加缓存文件命名

然后我们要添加生成缓存文件
  1.                         @include_once DISCUZ_ROOT.'./data/cache/cache_kk_xshow_image.php';
  2.                         @include_once DISCUZ_ROOT.'./data/cache/cache_kk_xshow_thread.php';
  3.                         @include_once DISCUZ_ROOT.'./data/cache/cache_kk_xshow_reply.php';
  4.                         @include_once DISCUZ_ROOT.'./data/cache/cache_kk_xshow_4th.php';
  5.                         @include_once DISCUZ_ROOT.'./data/cache/cache_kk_xshow_user.php';
复制代码
我们添加一行代码:
@include_once DISCUZ_ROOT.'./data/cache/cache_kk_xshow_novice.php';
php文件命名时注意一下规则,我是注意规则的,没测试过不要前缀的 = =!

完成修改数组及 $tab_num = 4; 代码多标签显示数量修改即可。我暂时改为5~ 我只是做演示~



四、xshow.class.php 添加查询调用帖子核心代码

接下来完成帖子调用查询功能,也是最重要的一部分。没有这些代码,根本就显示不出你要调用的帖子

看代码:
  1.         function update_image() {
  2.                 global $_G,$kk_xshow,$notshow,$onlyshow,$thread_num;
  3.                
  4.                 if ($kk_xshow['pic_switch'] && $kk_xshow['pic_on']) {//是否自定义图片
  5.                         $picpics = str_replace(array("\r\n", "\n"), '|', $kk_xshow['pic_urls']);
  6.                         $piclinks = str_replace(array("\r\n", "\n"), '|', $kk_xshow['pic_links']);
  7.                         $pictexts = str_replace(array("\r\n", "\n"), '|', $kk_xshow['pic_titles']);
  8.                 }
  9.                 if($kk_xshow['pic_on']) {
  10.                         if (!@$picpics || !$kk_xshow['pic_switch']) {//正常状态
  11.                                 $datapic = array();
  12.                                 $fids = $kk_xshow['only_pic'] ? 'AND t.fid IN('.$kk_xshow['only_pic'].')' : '';
  13.                                 $PicNums = $kk_xshow['pic_schnum'];
  14.         
  15.                                 if ($kk_xshow['pic_transfer'] == 1) {
  16.                                         $orderby = 'tid';
  17.                                 } else if ($kk_xshow['pic_transfer'] == 2) {
  18.                                         $orderby = 'tid';
  19.                                 } else {
  20.                                         $orderby = 'rand';
  21.                                 }
  22.                                 $orderby = $orderby != 'rand' ? 'attach.'.$orderby : 'rand()';
  23.                                 $query = DB::query("SELECT attach.attachment,t.tid, t.fid, t.subject FROM ".DB::table('forum_threadimage')." attach INNER JOIN ".DB::table('forum_thread')." t ON t.tid=attach.tid WHERE t.isgroup=0 AND t.displayorder>=0 $fids GROUP BY attach.tid ORDER BY $orderby DESC LIMIT 0, ".$PicNums);
  24.                                 while($pic = DB::fetch($query)) {
  25.                                         $pics['picpics'] = $_G['setting']['attachurl'].'forum/'.$pic['attachment'];
  26.                                         $pics['piclinks'] = 'forum.php?mod=viewthread%26tid='.$pic['tid'];
  27.                                         $pics['pictexts'] = str_replace('\'', ' ',$pic['subject']);
  28.                                         $pics['attaid'] = $pic['aid'];
  29.                                         $datapic[] = $pics;
  30.                                 }
  31.                                 $cacheArray .= "\$pic=".arrayeval($datapic).";\n";
  32.                                 unset($query, $datapic, $pics);
  33.                         }
  34.                         writetocache('kk_xshow_image', $cacheArray);
  35.                 }

  36.         }

  37.         function update_thread() {
  38.                 global $_G,$kk_xshow,$notshow,$onlyshow,$thread_num;

  39.                 $thread_num = $kk_xshow['thread_num'] ? $kk_xshow['thread_num'] : 10; //thread reply 4th
  40.                 $sql = "SELECT t.*, f.name FROM ".DB::table('forum_thread')." t, ".DB::table('forum_forum')." f WHERE f.status<>'3' AND f.fid=t.fid $notshow $onlyshow AND t.displayorder not IN(-1,-2) ORDER BY t.dateline DESC LIMIT 0, $thread_num";
  41.                 $objarray = kk_xshow_query($sql);
  42.                 $cacheArray .= "\$newPost=".arrayeval($objarray).";\n\n";
  43.                 unset($sql, $objarray);
  44.                 writetocache('kk_xshow_thread', $cacheArray);
  45.         }
  46.         function update_reply() {
  47.                 global $_G,$kk_xshow,$notshow,$onlyshow,$thread_num;

  48.                 $thread_num = $kk_xshow['thread_num'] ? $kk_xshow['thread_num'] : 10; //thread reply 4th
  49.                 //$thread_num = 20; //thread reply 4th
  50.                 $sql = "SELECT t.*, f.name FROM ".DB::table('forum_thread')." t, ".DB::table('forum_forum')." f WHERE f.status<>'3' AND f.fid=t.fid $notshow $onlyshow AND t.displayorder not IN(-1,-2) AND t.closed NOT LIKE 'moved|%' AND t.replies!=0 ORDER BY t.lastpost DESC LIMIT 0, $thread_num";
  51.                 $objarray = kk_xshow_query($sql);
  52.                 $cacheArray .= "\$newReply=".arrayeval($objarray).";\n\n";
  53.                 writetocache('kk_xshow_reply', $cacheArray);
  54.         }
  55.         function update_4th() {
  56.                 global $_G,$kk_xshow;
  57. //$thread_num = 20; //thread reply 4th
  58.                 $thread_num = $kk_xshow['thread_num'] ? $kk_xshow['thread_num'] : 10; //thread reply 4th
  59.                 $sortway = array('', 'replies', 'views', 'dateline', 'lastpost');
  60.                 $hotdig = $kk_xshow['hot_dig'] == 2 ? $sortway[$kk_xshow['dig_list']] : $sortway[$kk_xshow['hot_list']];
  61.                 $ctime = $kk_xshow['tid_day'] ? $_G['timestamp'] - (3600 * 24 * $kk_xshow['tid_day']) : 0;
  62.                 $DigShow = $kk_xshow['hot_dig'] == 2 && $kk_xshow['dig_rank'] ? 'AND t.digest IN('.$kk_xshow['dig_rank'].')' : '';
  63.                
  64.                 $sql = "SELECT t.*, f.name FROM ".DB::table('forum_thread')." t, ".DB::table('forum_forum')." f WHERE f.status<>'3' AND f.fid=t.fid $notshow $onlyshow $DigShow AND t.displayorder not IN(-1,-2) AND t.replies!=0 AND t.dateline>$ctime ORDER BY t.$hotdig DESC LIMIT 0, $thread_num";
  65.                 $objarray = kk_xshow_query($sql);
  66.                 $cacheArray .= "\$ObjArray=".arrayeval($objarray).";\n\n";
  67.                 unset($sortway, $hotdig, $sql, $ctime, $DigShow, $objarray);
  68.                 writetocache('kk_xshow_4th', $cacheArray);
  69.         }
  70.         function update_user() {
  71.                 global $_G,$kk_xshow;
  72.                
  73.                 if(!$kk_xshow['five_list']){
  74.                         $user_num = $kk_xshow['user_num'] ? $kk_xshow['user_num'] : 10; //user
  75.                 }else{
  76.                         $user_num = $kk_xshow['user_num'] ? $kk_xshow['user_num'] : 10;
  77.                 }
  78.                 $poststar = array();
  79.                 $tomonth = date('n');
  80.                 $todate = date('j');
  81.                 $toyear = date('Y');
  82.                 if ($kk_xshow['author_date'] == 1) {
  83.                         $time = mktime(0, 0, 0, $tomonth, $todate, $toyear);
  84.                 }else if ($kk_xshow['author_date'] == 2) {
  85.                         $time = mktime(0, 0, 0, $tomonth, $todate, $toyear) - 604800;
  86.                 }else if ($kk_xshow['author_date'] == 3) {
  87.                         $time = mktime(0, 0, 0, $tomonth, 1, $toyear);
  88.                 }else if ($kk_xshow['author_date'] == 4) {
  89.                         $time = mktime(0, 0, 0, 1, 1, $toyear);
  90.                 }else {
  91.                         $time = 0;
  92.                 }
  93.                 if($kk_xshow['author_date'] != 6) {
  94.                         $query = DB::query("select count(pid) as num, authorid, author from ".DB::table('forum_post')." where dateline>=$time group by authorid order by num desc limit 0, $user_num");
  95.                 } else {
  96.                         $query = DB::query("SELECT uid as authorid,username as author,regdate FROM ".DB::table('common_member')." ORDER BY regdate DESC limit 0, $user_num");
  97.                 }
  98.                 while($result = DB::fetch($query)) {
  99.                         $result['avatar'] = discuz_uc_avatar($result['authorid'], 'small');
  100.                         $result['autitl'] = $result['author'];
  101.                         if($kk_xshow['author_date'] == 6) {
  102.                                 $result['num'] = gmdate('Y-m-d', $result['regdate'] + $_G['setting']['timeoffset'] * 3600);
  103.                         }
  104.                         $poststar[] = $result;
  105.                 }
  106.                 $cacheArray .= "\$postStar=".arrayeval($poststar).";\n";
  107.                 writetocache('kk_xshow_user', $cacheArray);
  108.         }
  109. }
  110. ?>
复制代码
一个块一个块的简单说一下功能吧:
  • function update_image()
    查询获取随机图片轮播显示
  • function update_thread()
    查询获取论坛所有最新帖子显示
  • function update_reply()
    检索获取最后回复,即最新回复帖子
  • function update_4th()
    检索获取本周最热门帖子
  • function update_user()
    查询获取最新会员


嗯,懂点PHP + MySQL的应该都明白这代码的意思,必要的还有些 Discuz! 的函数~
PS:我不懂PHP + MySQL = = 都是找着找着规律就明白了。

随便来一段代码来做解释:
  1.         function update_thread() {
  2.                 global $_G,$kk_xshow,$notshow,$onlyshow,$thread_num;

  3.                 $thread_num = $kk_xshow['thread_num'] ? $kk_xshow['thread_num'] : 10; //thread reply 4th
  4.                 $sql = "SELECT t.*, f.name FROM ".DB::table('forum_thread')." t, ".DB::table('forum_forum')." f WHERE f.status<>'3' AND f.fid=t.fid $notshow $onlyshow AND t.displayorder not IN(-1,-2) ORDER BY t.dateline DESC LIMIT 0, $thread_num";
  5. // 重点,执行sql查询检索论坛最新帖子。获得最新内容~

  6.                 $objarray = kk_xshow_query($sql);
  7.                 $cacheArray .= "\$newPost=".arrayeval($objarray).";\n\n";
  8.                 unset($sql, $objarray);
  9.                 writetocache('kk_xshow_thread', $cacheArray);
  10.         }
复制代码
简单认识一下就好 = = 我的解释能力有限,因为对PHP根本就是半吊子,或者说没学过  = =!!

来写一段论坛的新代码:
  1.         function update_novice() {
  2.                 global $_G,$kk_xshow,$thread_num;
  3.                 //新手综合指定版块显示主题!
  4.                 $thread_num = $kk_xshow['thread_num'] ? $kk_xshow['thread_num'] : 10; //thread reply 4th
  5.                 $sql = "SELECT t.*, f.name FROM ".DB::table('forum_thread')." t, ".DB::table('forum_forum')." f WHERE f.status<>'3' AND f.fid=t.fid AND f.fid IN(44,45,46,47,49) AND t.displayorder not IN(-1,-2) ORDER BY t.dateline DESC LIMIT 0, $thread_num";
  6.                 $objarray = kk_xshow_query($sql);
  7.                 $cacheArray .= "\$newNovice=".arrayeval($objarray).";\n\n";
  8.                 unset($sql, $objarray);
  9.                 writetocache('kk_xshow_novice', $cacheArray);
  10.         }
复制代码
对比一下跟上面的代码有什么区别?
去掉了$notshow,$onlyshow, 只显示,和不显示 0.0

原代码:
$sql = "SELECT t.*, f.name FROM ".DB::table('forum_thread')." t, ".DB::table('forum_forum')." f WHERE f.status<>'3' AND f.fid=t.fid $notshow $onlyshow AND t.displayorder not IN(-1,-2) ORDER BY t.dateline DESC LIMIT 0, $thread_num";

新代码:
$sql = "SELECT t.*, f.name FROM ".DB::table('forum_thread')." t, ".DB::table('forum_forum')." f WHERE f.status<>'3' AND f.fid=t.fid AND f.fid IN(44,45,46,47,49) AND t.displayorder not IN(-1,-2) ORDER BY t.dateline DESC LIMIT 0, $thread_num";

注意红色处的代码,$notshow $onlyshow意思为调用后台设置里的只显示,或不显示哪个版块的帖子,然后and各种 = =!! 我编不下去了混蛋
而:AND f.fid IN(44,45,46,47,49)这段代码意思是调用版块fid为:44,45,46,47,49这五个版块的帖子,指定调用,这是雏鹰论坛的设置。

修改完成最新的代码如下:
  1.         function update_novice() {
  2.                 global $_G,$kk_xshow,$thread_num;
  3.                 //新手综合指定版块显示主题!
  4.                 $thread_num = $kk_xshow['thread_num'] ? $kk_xshow['thread_num'] : 10; //thread reply 4th
  5.                 $sql = "SELECT t.*, f.name FROM ".DB::table('forum_thread')." t, ".DB::table('forum_forum')." f WHERE f.status<>'3' AND f.fid=t.fid AND f.fid IN(44,45,46,47,49) AND t.displayorder not IN(-1,-2) ORDER BY t.dateline DESC LIMIT 0, $thread_num";
  6.                 $objarray = kk_xshow_query($sql);
  7.                 $cacheArray .= "\$newNovice=".arrayeval($objarray).";\n\n";
  8.                 unset($sql, $objarray);
  9.                 writetocache('kk_xshow_novice', $cacheArray);
  10.         }
复制代码
有一些需要替换的,将writetocache('kk_xshow_thread', $cacheArray);代码中的kk_xshow_thread替换为:kk_xshow_novice,
还有:$cacheArray .= "\$newPost=".arrayeval($objarray).";\n\n"; 其中$newPost修改为:$newNovice
$newNovice这个到模板页需要调用的~



五、template\xshow_tab.htm 添加标签数量

添加新功能已经完成实现了,接下来需要修改模板页的了。

temaplate文件夹中xshow_tab.htm文件
看代码:
  1.   <table cellspacing="0" cellpadding="0" width="100%" align="center">
  2.           <tr class="header"><td class="border">
  3.                                   <!--{if $pic_on}--><ul class="tabs"><li class="tab_cur">{$x_title[0]}</li></ul></td><td class="border"><!--{/if}--><ul class="tabs">
  4.                                   <li id="kk_xshow_tab_1" class="tab_cur" onmouseover="xshowShow(1);">{$x_title[1]}</li>
  5.                                 <li id="kk_xshow_tab_2" class="tab" onmouseover="xshowShow(2);">{$x_title[2]}</li>
  6.                                 <li id="kk_xshow_tab_3" class="tab" onmouseover="xshowShow(3);">{$x_title[3]}</li>
  7. <!--{if !$kk_xshow['five_list']}-->
  8.                                 <li id="kk_xshow_tab_4" class="tab" onmouseover="xshowShow(4);">{$x_title[4]}</li>
  9. <!--{/if}-->
  10.         </li></ul></td>
  11.     </tr>
复制代码
这是一个表格代码
<td class="border">
                                  <!--{if $pic_on}--><ul class="tabs"><li class="tab_cur">{$x_title[0]}</li></ul></td>
这段代码意思为第一个标签的是图片轮播显示,接下来的那段代码则是右边的多标签式的代码了。
  1.   <table cellspacing="0" cellpadding="0" width="100%" align="center">
  2.           <tr class="header"><td class="border">
  3.                                   <!--{if $pic_on}--><ul class="tabs"><li class="tab_cur">{$x_title[0]}</li></ul></td><td class="border"><!--{/if}--><ul class="tabs">
  4.                                   <li id="kk_xshow_tab_1" class="tab_cur" onmouseover="xshowShow(1);">{$x_title[1]}</li>
  5.                                 <li id="kk_xshow_tab_2" class="tab" onmouseover="xshowShow(2);">{$x_title[2]}</li>
  6.                                 <li id="kk_xshow_tab_3" class="tab" onmouseover="xshowShow(3);">{$x_title[3]}</li>
  7.                                 <li id="kk_xshow_tab_4" class="tab" onmouseover="xshowShow(4);">{$x_title[4]}</li>
  8.                                 <li id="kk_xshow_tab_5" class="tab" onmouseover="xshowShow(5);">{$x_title[5]}</li>
  9.                                 <li id="kk_xshow_tab_6" class="tab" onmouseover="xshowShow(6);">{$x_title[6]}</li>
  10.                                 <li id="kk_xshow_tab_7" class="tab" onmouseover="xshowShow(7);">{$x_title[7]}</li>
  11. <!--{if !$kk_xshow['five_list']}-->
  12. <!--{/if}-->
  13.         </li></ul></td>
  14.     </tr>
复制代码
这是我修改的代码,显示了 7 个标签,跟雏鹰现在使用的一样!
只是添加多一行代码,修改一下数字序列就可以了。



六、template\xshow_tab.htm 添加标签数量中显示调用代码

下面显示的代码则是:
  1.                                         <div id="kk_xshow_cont_1" style="">
  2.                                                 <!--{loop $newPost $thread}-->
  3.                                                 <li >
  4.                                                 <!--{if $kk_xshow['is_author']}--><span><a href="home.php?mod=space.php&uid=$thread['authorid']"{$linkwindow} style="color:{$author_color}">[{$thread['authors']}]</a></span><!--{/if}-->
  5.                                                 <!--{if $thread['replies']}-->
  6. [<a href="forum-$thread['fid']-1.html" style="font-weight:700; color:#FF0000">$thread['name']</a>]&nbsp;&nbsp;<a href="forum.php?mod=viewthread&tid=$thread['tid']"{$thread['highlight']}{$linkwindow} title="{$propre[0]}$thread['name']\n{$propre[1]}$thread['subject']\n{$propre[2]}$thread['author'] ($thread['date'])\n{$propre[3]}$thread['views']{$propre[4]}\n{$propre[5]}$thread['lastposter'] ($thread['retime'])\n{$propre[5]}$thread['replies']{$propre[4]}" name="xxx">$thread['view_subject']</a>(<a style="font-style:italic; font-size:9px" title="发布时间">$thread['date']</a>)
  7.                                                 <!--{else}-->
  8.                 [<a href="forum-$thread['fid']-1.html" style="font-weight:700; color:#FF0000">$thread['name']</a>]&nbsp;&nbsp;<a href="forum.php?mod=viewthread&tid=$thread['tid']"{$thread['highlight']}{$linkwindow} title="{$propre[0]}$thread['name']\n{$propre[1]}$thread['subject']\n{$propre[2]}$thread['author'] ($thread['date'])\n{$propre[3]}$thread['views']{$propre[4]}\n{$propre[6]}" name="xxx">$thread['view_subject']</a>(<a style="font-style:italic; font-size:9px" title="发布时间">$thread['date']</a>)
  9.                                                 <!--{/if}-->
  10.                                                 </li>
  11.                                                 <!--{/loop}-->
  12.                                         </div>
复制代码
懂点html的亲都懂这些代码意思~ 这里我就不多说了,贴一下自己改的代码上来对比一下就可以了。
  1.                                         <div id="kk_xshow_cont_4" style="display:none;">
  2.                                                 <!--{loop $newNovice $thread}-->
  3.                                                 <li >
  4.                                                 <!--{if $kk_xshow['is_author']}--><span><a href="home.php?mod=space.php&uid=$thread['authorid']"{$linkwindow} style="color:{$author_color}">[作者:{$thread['authors']}&nbsp;&nbsp;时间:{$thread['date']}]</a></span><!--{/if}-->
  5.                                                 <!--{if $thread['replies']}-->
  6. <a href="forum.php?mod=viewthread&tid=$thread['tid']"{$thread['highlight']}{$linkwindow} title="{$propre[0]}$thread['name']\n{$propre[1]}$thread['subject']\n{$propre[2]}$thread['author'] ($thread['date'])\n{$propre[3]}$thread['views']{$propre[4]}\n{$propre[5]}$thread['lastposter'] ($thread['retime'])\n{$propre[5]}$thread['replies']{$propre[4]}" name="xxx">$thread['view_subject']</a>
  7.                                                 <!--{else}-->
  8. <a href="forum.php?mod=viewthread&tid=$thread['tid']"{$thread['highlight']}{$linkwindow} title="{$propre[0]}$thread['name']\n{$propre[1]}$thread['subject']\n{$propre[2]}$thread['author'] ($thread['date'])\n{$propre[3]}$thread['views']{$propre[4]}\n{$propre[6]}" name="xxx">$thread['view_subject']</a>
  9.                                                 <!--{/if}-->
  10.                                                 </li>
  11.                                                 <!--{/loop}-->
  12.                                         </div>
复制代码
原代码是带显示帖子所发表的版块的,而我修改是不显示的,还有颜色等,懂html的我就不用解释了= =!! 不懂的去恶补一下知识!!
之前xshow.class.php修改的代码,有一个说到在模板里需要调用的$newNovice 没注意的翻上去再看一遍下来!
$newPost 替换为 $newNovice
<div id="kk_xshow_cont_1" style=""> 这块代码则显示是在第几个标签里显示的,这里改一下数字就好了,对比一下我的代码就可以了!



七、后台添加标签名称及设置

关于后台设置!
现在修改完了代码,也修改完了设置指定调用哪个版块的代码,写修改完了模板文件里显示的代码。
现在需要命名一下这个标签的名称!
根据论坛里的设置是:新手综合 所以看我截图吧。
5.jpg

看官无视掉新手综合下面的那些文字标题,注意最后一行的新会员就可以了。这个东西我还没搞清楚,所以我就一直留着,不留着的话,会错误的。
所以在添加标题的时候请在添加会员前一行添加。这样就不会出错。

后台整体设置:
  • N格标题设置
    在新会员前一行开始添加,不管是多个还是单个新的标签,都需要在新会员前一行进行添加
  • 标题文字长度
    我设置的是50,因为分辨率问题,所以我设置的是50,个人推荐设置50。因为其他人的计算机分辨率并不是1024*768的,推荐设置50吧。一但长了,那么显示的乱……如果设置宽屏,那么获取的内容也少,这样也空出了一大部分的内容,一大块的空白区域。80长度就是获取整个标题了!
  • 第四格天数(热门或精华)
    7 我设置的是 7 天,7 天一周嘛,也可以自己设置的天数。随便设置~ 自己斟酌着设置就行了。
  • 会员调用显示方式(重点)
    选择 否 。是否横排显示调用的会员列表。是:横排显示_否:竖排显示。竖排就会占多一个标签,所以上面标题那里不要去掉。要不然会占掉最后一个标签的~
  • 标签式浏览
    选择 是。这样设置就完成了!!


关于后台的设置,这块修改xml文件我没这方面的知识 = = 所以我是通过编辑代码,结合后台设置来完成的。。。
所以整个二次修改还是有些缺陷的~ 如果能完善后台的设置,这个插件才算是真正完成了,由于时间的问题,所以我就只做到了这里,就没接下去完善后台代码了。




添加更多的标签,重复上面的操作就可以了。
简单说下。

一、xshow.class.php 修改显示标签数量
二、xshow.class.php 修改添加缓存数组
三、xshow.class.php 添加缓存文件命名
四、xshow.class.php 添加查询调用帖子核心代码
五、template\xshow_tab.htm 添加标签数量
六、template\xshow_tab.htm 添加标签数量中显示调用代码,并调用xshow.class.php 中添加的核心代码函数(就像:$newNovice 添加进去后就能调用这段核心代码来显示了,注意修改显示标签的位置。)
七、后台添加标签名称及设置





唯一缺陷的就是后台的问题,还有会员显示那个标签,这个当时基本完成了我打算完善后台的时候就没有了头绪,没有过xml之类的基础,所以我就放弃了,等着哪天有时间了我再去完善!
另外就是关于新会员这个标签,这个设置也影响着后台那里,如果去掉这个标题名称,那么也会影响上一个标题的调用数据。
反正现在是一点头绪都没有,到现在想想我要把之前修改的步骤写下来,先记一下,也希望能有别人看到,去完善这个插件。

最近事又多,今天就花了一个下午的时间写一下这个文章,写的有些凌乱,大家将就着看,按着步骤去改是没问题的!
如果有问题请在帖内回复提问,有时间跟帖会回复解答!

PS:在开始着手改这插件的时候,和小乖讨论了好久……最后是摸索找规律,拼接代码检查问题所在,然后修改完成~
PS1:因为是好几个月前的事了,可能有些记不起来。望见谅~
PS2:感谢雏鹰提供测试~ 这个插件一直用在雏鹰论坛这里,测试到现在都没出现错误。
PS3:插件还是存在一些缺陷的,有时间的朋友希望可以完善一下。
PS4:好累,昨天胃痛到现在还忍着,都吃了一大排的胃康灵了!!写完了,去躺会儿……
PS5:有问题的跟帖回复说明,起来一一回复解答!
PS6:理论上版本支持X1.5 - X2.5 因为升级方式都是验证xml文件里的版本信息。该插件原为Discuz! X1.5 修改版本后经测试一样可行




Site:雏鹰网络技术论坛
Url:http://Www.EyasIT.Com
Author:猫猫


转载请注明出处:二次修改Discuz 首页多格插件_首页N格插件
地址:http://www.eyasit.com/thread-1077-1-1.html

请尊重原作者的劳动成果。
回复

使用道具 举报

zzz2004 发表于 2012-10-27 00:13:22 | 显示全部楼层
对于动手贴一定要支持
回复

使用道具 举报

johnso 发表于 2012-10-29 20:18:23 | 显示全部楼层
很好,只是不够完善
回复

使用道具 举报

ahquh 发表于 2012-10-29 20:49:03 | 显示全部楼层
谢谢 ,我也试试
回复

使用道具 举报

GT雨燕8秒41 发表于 2012-11-11 05:15:03 | 显示全部楼层
很漂亮 占位年年有东江鱼优惠促销啦
回复

使用道具 举报

dujun0618 发表于 2012-11-11 21:01:42 | 显示全部楼层

一种不可思议的方式与DZ的数据调用完美整合,只要你有创意,论坛数据任你选择。数据方面完全不用我再设计了,一次投入,终生受用。优质的售后服务,让你一定觉得很值。

默认有22个调用模块,但是只要你会“后台-门户-模块管理-数据调用”,调用模块是无数个了。如果不会设计模块,加群253674346,包你学会。因为我本身就有一个站长网,是帮站长解决问题的。

一次收费安装,终生使用,可以不断免费升级,享受众多用户提出的好功能。

最大的优点:
1、图片区、主题区、版块区与会员区的标题与内容,很直观,很容易修改标题、标题的顺序与内容。
2、整合了DZ的模块数据调用,模块的性能、效率与操作得到保证。
3、只要你自己会设计模块,那么也可以调用自己设计的模块,扩展性很好,前提是模块的模板要符合要求,本教程里提供了模板规则。
4、模块可以有自动加载数据,也可以用推送的方式,内容由管理员自己决定,并且有的图片的模块,还可以裁剪图片,提高缩略图的美观度。
5、N格、图片区、主题区、版块区、会员区与提示层的风格可以通过设置进行装修,并且还支持宽屏显示。

请阅读功能详细介绍与安装使用教程:http://www.cnit618.com/html/kyxt/dzhack/2826.htm
回复

使用道具 举报

李渠 发表于 2012-11-11 21:46:24 | 显示全部楼层
N格 现在很火啊

评分

1

查看全部评分

回复

使用道具 举报

bossll 发表于 2012-12-12 21:22:47 | 显示全部楼层
辛劳这位大大分享很好教学
回复

使用道具 举报

bossll 发表于 2013-1-15 14:11:31 | 显示全部楼层
谢谢大大辛劳分享很好教学
回复

使用道具 举报

cbityy 发表于 2013-1-15 14:45:05 | 显示全部楼层
虽然看了很久没有我需要的内容,但对于楼主付出的辛苦表示衷心的感谢
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-25 11:46 , Processed in 0.126403 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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