今天一早就弄dz,说有一个地方的文章地址是动态的,这是我就郁闷了,之前好好的,怎么又出现问题了呢。

经过查看,原来是他们自己装了一个叫柒瑞首页四格v7.7   的插件,插件本身存在着这个缺陷, 所以只能又google了,

搜了下,还真的有人遇到这种问题咧

柒瑞首页四格 v7.7是支持DiscuzX2.5的一个首页多格插件,这几天一直在琢磨着将这个插件修改一下,让首页调用图片的地方可以调用自己想要调用的版块,以前的调用图片都是全站搜索的,难免会出现一些自己不想看到的图片或者广告的图片,可惜的是这个插件的后台不支持自己修改调用。而且还有一个缺点就是最新回复的地方它显示的动态的链接地址,对于我全站伪静态来说有点分歧,所以我就不得不自己修改了,这篇文章献给用这个插件的朋友,对有需要的参考修改其他的插件的朋友也可以对照参考下,开始吧。

首先按照这个插件,我们打开这个插件下的文件,文件路径是\source\plugin\toplist_7ree,我们可以看到这里面的文件就是插件运行的文件了。开始我们修改的是首页图片调用的问题。

打开toplist_7ree.class.php文件我们可以看到

  1. ///////////////////////////////幻灯图///////////////
  2. if ($style_7ree == “imgswordstyle_7ree”){
  3. //幻灯图获取
  4. //—设置—start
  5. $shownums        = 6;//演示个数 6以内
  6. $searchnums        = 18;//搜索总数.
  7. $cachelife        = 1800;//缓存时间.
  8. $orderby        = ‘dateline’;//搜索顺序:按日期dateline.按浏览次数downloads.随机rand.
  9. $pic_cachename        = ‘showpic_7ree’;//缓存名.若与何插件冲突请修改,只要不冲突不会影响使用.
  10. //—设置—end
  11. if((@!include(‘./data/cache/cache_’.$pic_cachename.’.php’)) || $expiration < time() || $cacheshownums != $shownums || $cachesearchnums != $searchnums || $cachecachelife != $cachelife || $cacheorderby != $orderby || $cachecachename != $pic_cachename || $cachesearchfid != $searchfid) {
  12.         //$orderby = $orderby != ‘rand’ ? ‘attach.’.$orderby : ‘rand()’;
  13.         $fids = $searchfid ? ‘AND ‘.”t.fid IN ($searchfid)” : ”;
  14.         $data = array();
  15.         $query = DB::query(“SELECT a.attachment,t.tid, t.fid, t.subject FROM “.DB::table(‘forum_threadimage’).” a INNER JOIN “.DB::table(‘forum_thread’).” t ON t.tid=a.tid WHERE t.isgroup=0 AND t.displayorder>=0 AND $onoff_7ree GROUP BY a.tid ORDER BY a.tid DESC LIMIT $searchnums”);
  16. //        $query = DB::query(“SELECT attachment FROM “.DB::table(‘forum_threadimage’).” LIMIT 5″);
  17.                                 while($pic = DB::fetch($query)) {
  18.                                         $pics['picpics'] = $_G['setting']['attachurl'].’forum/’.$pic['attachment'];
  19.                                         $pics['piclinks'] = ‘forum.php?mod=viewthread%26tid=’.$pic['tid'];
  20.                                         $pics['pictexts'] = str_replace(‘\”, ‘ ‘,$pic['subject']);
  21.                                         $pics['attaid'] = $pic['aid'];
  22.                                         $datapic[] = $pics;
  23.                                 }
  24.                                 $cacheArray .= “\$pic_7ree=”.arrayeval($datapic).”;\n”;
  25.         writetocache($pic_cachename, $cacheArray);
  26.         include(DISCUZ_ROOT.’./data/sysdata/cache_’.$pic_cachename.’.php’);
  27. }
  28. if(is_array($pic_7ree) && PHP_VERSION > 4.3 ) shuffle($pic_7ree);
  29. $i = 0;
  30. $j = 0;
  31. while ($j < $shownums && isset($datapic[$i])) {
  32.         if(is_readable($pic_7ree[$i]['picpics'])) {
  33.                 $showpicpics .= $comma.$pic_7ree[$i]['picpics'];
  34.                 $showpiclinks .= $comma.$pic_7ree[$i]['piclinks'];
  35.                 $showpictexts .= $comma.$pic_7ree[$i]['pictexts'];
  36.                 $comma = ‘|’;
  37.                 $j++;
  38.         }elseif($_G['setting']['ftp']['on']){
  39.           if ($_G['setting']['ftp']['hideurl']) {
  40.           $picpics .= $comma.$boardurl.’attachment.php?aid=’.$pic_7ree['attaid'];
  41.           } else {
  42.           $picpics .= $comma.$_G['setting']['ftp']['attachurl'].str_replace($attachurl, ”, $pic_7ree['picpics']);
  43.           }
  44.           $piclinks .= $comma.$pic_7ree['piclinks'];
  45.           $pictexts .= $comma.$pic_7ree['pictexts'];
  46.           }
  47.           $comma = ‘|’;
  48.             $i++;
  49.         }
  50. }


这就是图片调用的代码了,我们首先要想到的是,图片调用的是从数据库里面调用图片的运行路径的,所以我们先找到数据库调用数据的地方,也就是这个地方

  1. $query = DB::query(“SELECT a.attachment,t.tid, t.fid, t.subject FROM “.DB::table(‘forum_threadimage’).” a INNER JOIN “.DB::table(‘forum_thread’).” t ON t.tid=a.tid WHERE t.isgroup=0 AND t.displayorder>=0 AND
  2. $onoff_7ree  GROUP BY a.tid ORDER BY a.tid DESC LIMIT $searchnums”);


这段代码的意思是从数据库表forum_threadimage 中调用a.attachment,t.tid, t.fid, t.subject 这些字段,具体这些字段表示什么我们就不需要知道了,我们只要知道唯一个字段的保存内容就是t.fid,这个字段就是保存各个版块ID的地方。后面的$onoff_7ree 是后台设置不调用哪些版块的程序函数,所以我们可以想象一下,将不调用版块的地方改成我们只调用版块的地方就行了,那么就可以实现我们的目的了,我们将$onoff_7ree 修改成t.fid=58,这个地方的58是你想要调用的版块的ID,至于你怎么知道的,你可以看看你版块的URL地址,例如爱尚秀的URL是 http://bbs.aiwebcom.com/forum-58-1.html,这中间的58就是我们要调用的地方。修改完成后直接保存,后台更新缓存,刷新前台你就可以看见了,其实后台我们可以自己加表格,直接设置,我不想那么麻烦,有需要的朋友可以找我。

其次就是更改最新回复伪静态路径的问题了,我们打开文件夹\source\plugin\toplist_7ree\template里面的toplist_7ree.htm可以看到这段代码

  1. <td  width=”25%”>
  2.    <div  id=”rep1″ style=”height:215px”><div  id=”rep2″>
  3.       <!–{loop $reply_post_threadlist $rthread}–>
  4.        <div style=”overflow: hidden;height: 20px;width: 100%;”
  5.        <!–{if $linetitle_style_7ree == “on_popupmenu_7ree”}–>
  6.        id=”rep_7ree_$rthread[tid]“  onmouseover=”showMenu({‘ctrlid’:this.id,’duration’:’1′})”
  7.         <!–{/if}–>
  8.        ><img src=”source/plugin/toplist_7ree/template/images/list_7ree.gif” border=”0″ align=”absmiddle”/> <a href=”forum.php?mod=viewthread&tid=$rthread[tid]” $rthread['highlight'] $blank_7ree><span >$rthread[view_subject]</span></a></div>
  9. <!–{if $linetitle_style_7ree == “on_popupmenu_7ree”}–>
  10.        <div id=”rep_7ree_$rthread[tid]_menu” style=”width:220px;display:none”>
  11.          <strong>$rthread[view_subject]</strong>
  12.          {lang toplist_7ree:htm_lang_bankuai_7ree}$rthread[forumname]
  13.          {lang toplist_7ree:htm_lang_huifu_7ree}$rthread[lastposter]
  14.          {lang toplist_7ree:htm_lang_shijian_7ree}$rthread[lastreplytime]
  15.          {lang toplist_7ree:htm_lang_liulan_7ree}$rthread[views]{lang toplist_7ree:htm_lang_ci_7ree}  {lang toplist_7ree:htm_lang_huifu_7ree}$rthread[replies]{lang toplist_7ree:htm_lang_ci_7ree}
  16.        </div>
  17.        <!–{/if}–>
  18.       <!–{/loop}–>
  19.             </div></div>
  20.    </td>


找到路径调用的地方

  1. <a href=”forum.php?mod=redirect&tid=$rthread[tid]&goto=lastpost#lastpost” $rthread['highlight'] $blank_7ree><span >$rthread[view_subject]</span></a>


将它修改成

  1. <a href=”forum.php?mod=viewthread&tid=$rthread[tid]” $rthread['highlight'] $blank_7ree><span >$rthread[view_subject]</span></a>


然后保存更新缓存就可以了。

 
© 2012 Ai-WEB的博客 Suffusion theme by Sayontan Sinha