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

 找回密码
 立即注册
搜索

[已解决] 请教switch ($forum['fid']) 版块 id判断的语句,请路过的朋友指点

[复制链接]
站站鱼 发表于 2010-8-8 22:07:54 | 显示全部楼层 |阅读模式
这个作用是为了使用不同的 forumdisplay模板
由于原来的源文件和现在源文件有了很多变化,包括模板目录,以及读取模板的方式都有了很大的变化,所以,研究了老长时间也没有成功,希望各位鼎力相助,万分感谢!
原来
7x版的时候
是这么写的
  1. switch ($forum['fid'])

  2. {
  3. case '1':  include template('forumdisplay_7X'); break;
复制代码
现在dx版有限变化


  1. switch ($_G['forum']['fid'])

  2. {
  3. case '1':  include template('forum/forumdisplay_DX); break;
复制代码
没有什么作用
请给位大大给指点下 正确的写法 非常感谢


涉及的代码:7x版
  1. if($forumjump) {

  2.         $forummenu = forumselect(FALSE, 1);

  3. }

  4. switch ($forum['fid'])

  5. {


  6.         case '1':  include template('forumdisplay1'); break;

  7.         case '2':  include template('forumdisplay2'); break;

  8.         case '3':  include template('forumdisplay'); break;

  9.                default: include template('forumdisplay');

  10. }



  11. ?>
复制代码
涉及的代码:Dx版

$subforumonly = $_G['forum']['simple'] & 1;
if($subforumonly) {
        $forummenu = '';
        if($_G['setting']['forumjump']) {
                $forummenu = forumselect(FALSE, 1);
        }
switch ($_G['forum']['fid'])

{



        case '1':  include template('forum/forumdisplay1'); break;

        case '2':  include template('forum/forumdisplay2'); break;

        case '3':  include template('forum/forumdisplay3'); break;


        include template('forum/forumdisplay');
        exit();
}

$page = $_G['page'];
$page = $_G['setting']['threadmaxpages'] && $page > $_G['setting']['threadmaxpages'] ? 1 : $page;
$start_limit = ($page - 1) * $_G['tpp'];
$simplestyle = !$_G['forum']['allowside'] || $page > 1 ? true : false;

if($_G['forum']['modrecommend'] && $_G['forum']['modrecommend']['open'] && !$simplestyle) {
        $_G['forum']['recommendlist'] = recommendupdate($_G['fid'], $_G['forum']['modrecommend'], '', 1);
}
$recommendgroups = array();
if($_G['forum']['status'] != 3 && !$simplestyle) {
        loadcache('forumrecommend');
        $recommendgroups = $_G['cache']['forumrecommend'][$_G['fid']];
}
if(!$simplestyle || !$_G['forum']['allowside'] && $page == 1) {
        if($_G['cache']['announcements_forum']) {
                $announcement = $_G['cache']['announcements_forum'];
                $announcement['starttime'] = dgmdate($announcement['starttime'], 'd');
        } else {
                $announcement = NULL;
        }
}

$filteradd = $sortoptionurl = $sp = '';
$sorturladdarray = $selectadd = array();
$forumdisplayadd = array('orderby' => '');
$specialtype = array('poll' => 1, 'trade' => 2, 'reward' => 3, 'activity' => 4, 'debate' => 5);
$filterfield = array('digest', 'recommend', 'typeid', 'sortid', 'special', 'dateline', 'specialtype', 'author', 'reply', 'view', 'lastpost', 'heat', 'page');

foreach ($filterfield as $v) {
        $forumdisplayadd[$v] = '';
}

if(isset($_G['gp_filter']) && in_array($_G['gp_filter'], $filterfield)) {
        if($query_string = $_SERVER['QUERY_STRING']) {
                $query_string = substr($query_string, (strpos($query_string, "&") + 1));
                parse_str($query_string, $geturl);
                $geturl = daddslashes($geturl, 1);
                if($geturl && is_array($geturl)) {
                        $issort = isset($_G['gp_sortid']) && isset($_G['forum']['threadsorts']['types'][$_G['gp_sortid']]) && $quicksearchlist ? TRUE : FALSE;
                        $selectadd = $issort ? $geturl : array();
                        foreach($filterfield as $option) {
                                foreach($geturl as $field => $value) {
                                        if(in_array($field, $filterfield) && $option != $field && $field != 'page') {
                                                $forumdisplayadd[$option] .= '&'.$field.'='.$value;
                                        }
                                }
                                if($issort) {
                                        $sfilterfield = array_merge(array('filter', 'sortid', 'orderby', 'fid'), $filterfield);
                                        foreach($geturl as $soption => $value) {
                                                $forumdisplayadd[$option] .= !in_array($soption, $sfilterfield) ? "&$soption=$value" : '';
                                        }
                                }
                        }

                        if($issort && is_array($quicksearchlist)) {
                                foreach($quicksearchlist as $option) {
                                        $identifier = $option['identifier'];
                                        foreach($geturl as $option => $value) {
                                                $sorturladdarray[$identifier] .= !in_array($option, array('filter', 'sortid', 'orderby', 'fid', 'searchsort', $identifier)) ? "&$option=$value" : '';
                                        }
                                }
                        }

                        foreach($geturl as $field => $value) {
                                if(in_array($field, $filterfield) && $field != 'page') {
                                        $filteradd .= $sp;
                                        if($field == 'digest') {
                                                $filteradd .= "AND digest>'0'";
                                        } elseif($field == 'recommend' && $_G['setting']['recommendthread']['status']) {
                                                $filteradd .= "AND recommends>'".intval($_G['setting']['recommendthread']['iconlevels'][0])."'";
                                        } elseif($field == 'specialtype') {
                                                $filteradd .= "AND special='$specialtype[$value]'";
                                        } elseif($field == 'dateline') {
                                                $filteradd .= $value ? "AND lastpost>='".(TIMESTAMP - $value)."'" : '';
                                        } else {
                                                $filteradd .= "AND $field='$value'";
                                        }
                                        $sp = ' ';
                                }
                        }
                }
        }
        $simplestyle = true;
} else {
        $_G['gp_filter'] = '';
}

if(!empty($_G['gp_orderby']) && in_array($_G['gp_orderby'], array('lastpost', 'dateline', 'replies', 'views', 'recommends', 'heats'))) {
        $forumdisplayadd['orderby'] .= '&orderby='.$_G['gp_orderby'];
} else {
        $_G['gp_orderby'] = isset($_G['cache']['forums'][$_G['fid']]['orderby']) ? $_G['cache']['forums'][$_G['fid']]['orderby'] : 'lastpost';
}

if(!empty($_G['gp_ascdesc']) && in_array($ascdesc, array('ASC', 'DESC'))) {
        $forumdisplayadd['ascdesc'] .= '&ascdesc='.$_G['gp_ascdesc'];
} else {
        $_G['gp_ascdesc'] = isset($_G['cache']['forums'][$_G['fid']]['ascdesc']) ? $_G['cache']['forums'][$_G['fid']]['ascdesc'] : 'DESC';
}

$check = array();
$check[$_G['gp_filter']] = $check[$_G['gp_orderby']] = $check[$_G['gp_ascdesc']] = 'selected="selected"';

if(($_G['forum']['status'] != 3 && !$simplestyle) || !empty($_G['forum']['threadsorts']['templatelist'])) {
        $onlinenum = getonlinenum($_G['fid']);
        if($_G['setting']['whosonlinestatus'] == 2 || $_G['setting']['whosonlinestatus'] == 3) {
                $_G['setting']['whosonlinestatus'] = 1;
                $detailstatus = $showoldetails == 'yes' || (((!isset($_G['cookie']['onlineforum']) && !$_G['setting']['whosonline_contract']) || $_G['cookie']['onlineforum']) && !$showoldetails);

                if($detailstatus) {
                        updatesession();
                        $actioncode = lang('forum/action');
                        $whosonline = array();
                        $forumname = strip_tags($_G['forum']['name']);

                        $query = DB::query("SELECT uid, groupid, username, invisible, lastactivity FROM ".DB::table('common_session')." WHERE action='2' AND uid>'0' AND fid='$_G[fid]' AND invisible='0' ORDER BY lastactivity DESC LIMIT 12");
                        $_G['setting']['whosonlinestatus'] = 1;
                        while($online = DB::fetch($query)) {
                                if($online['uid']) {
                                        $online['icon'] = isset($_G['cache']['onlinelist'][$online['groupid']]) ? $_G['cache']['onlinelist'][$online['groupid']] : $_G['cache']['onlinelist'][0];
                                } else {
                                        $online['icon'] = $_G['cache']['onlinelist'][7];
                                        $online['username'] = $_G['cache']['onlinelist']['guest'];
                                }
                                $online['lastactivity'] = dgmdate($online['lastactivity'], 't');
                                $whosonline[] = $online;
                        }
                        unset($online);
                }
        } else {
                $_G['setting']['whosonlinestatus'] = 0;
        }
}

if($_G['forum']['threadsorts']['types'] && $sortoptionarray && ($_G['gp_searchoption'] || $_G['gp_searchsort'])) {
        $sortid = intval($_G['gp_sortid']);

        if($_G['gp_searchoption']){
                $forumdisplayadd['page'] = '&sortid='.$sortid;
                foreach($_G['gp_searchoption'] as $optionid => $option) {
                        $identifier = $sortoptionarray[$sortid][$optionid]['identifier'];
                        $forumdisplayadd['page'] .= $option['value'] ? "&searchoption[$optionid][value]=$option[value]&searchoption[$optionid][type]=$option[type]" : '';
                }
        }

        if($searchsorttids = sortsearch($_G['gp_sortid'], $sortoptionarray, $_G['gp_searchoption'], $selectadd, $_G['fid'])) {
                $filteradd .= "AND tid IN (".dimplode($searchsorttids).")";
        }
}

if(empty($_G['gp_filter']) && empty($_G['gp_sortid']) && empty($_G['gp_archiveid']) && empty($_G['forum']['archive'])) {
        $_G['forum_threadcount'] = $_G['forum']['threads'];
} else {
        $_G['forum_threadcount'] = DB::result_first("SELECT COUNT(*) FROM ".DB::table($threadtable)." WHERE fid='{$_G['fid']}' $filteradd AND displayorder>='0'");
}

$thisgid = $_G['forum']['type'] == 'forum' ? $_G['forum']['fup'] : (!empty($_G['cache']['forums'][$_G['forum']['fup']]['fup']) ? $_G['cache']['forums'][$_G['forum']['fup']]['fup'] : 0);
$forumstickycount = $stickycount = $stickytids = 0;
if($_G['setting']['globalstick'] && $_G['forum']['allowglobalstick']) {
        $stickytids = $_G['cache']['globalstick']['global']['tids'].(empty($_G['cache']['globalstick']['categories'][$thisgid]['count']) ? '' : ','.$_G['cache']['globalstick']['categories'][$thisgid]['tids']);

        $stickytids = trim($stickytids, ', ');
        if ($stickytids === ''){
                $stickytids = '0';
        }

        if($_G['forum']['status'] != 3) {
                $stickycount = $_G['cache']['globalstick']['global']['count'];
                if(!empty($_G['cache']['globalstick']['categories'][$thisgid])) {
                        $stickycount += $_G['cache']['globalstick']['categories'][$thisgid]['count'];
                }
        }
}

$forumstickytids = array();
loadcache('forumstick');
$_G['cache']['forumstick'][$_G['fid']] = isset($_G['cache']['forumstick'][$_G['fid']]) ? $_G['cache']['forumstick'][$_G['fid']] : array();
$forumstickycount = count($_G['cache']['forumstick'][$_G['fid']]);
foreach($_G['cache']['forumstick'][$_G['fid']] as $forumstickthread) {
        $forumstickytids[] = $forumstickthread['tid'];
}
if(!empty($forumstickytids)) {
        $forumstickytids = dimplode($forumstickytids);
        $stickytids .= ", $forumstickytids";
}
$stickycount += $forumstickycount;

$filterbool = !empty($_G['gp_filter']) && in_array($_G['gp_filter'], $filterfield);
$_G['forum_threadcount'] += $filterbool ? 0 : $stickycount;
$forumdisplayadd['page'] = !empty($forumdisplayadd['page']) ? $forumdisplayadd['page'] : '';
$multipage_archive = $_G['gp_archiveid'] && in_array($_G['gp_archiveid'], $threadtableids) ? "archiveid={$_G['gp_archiveid']}" : '';
$multipage = multi($_G['forum_threadcount'], $_G['tpp'], $page, "forum.php?mod=forumdisplay&fid=$_G[fid]".($_G['gp_filter'] ? "&filter=$_G[gp_filter]" : '')."$forumdisplayadd[orderby]$forumdisplayadd
回复

使用道具 举报

ilei365 发表于 2010-8-8 22:12:03 | 显示全部楼层
看不懂。。
回复

使用道具 举报

3583101io 发表于 2010-8-8 22:50:46 | 显示全部楼层
不会啊。
回复

使用道具 举报

 楼主| 站站鱼 发表于 2010-8-8 23:54:53 | 显示全部楼层
不管如何 谢谢大家~~~
回复

使用道具 举报

 楼主| 站站鱼 发表于 2010-8-9 12:59:07 | 显示全部楼层
每次都是遇到大问题
回复

使用道具 举报

 楼主| 站站鱼 发表于 2010-8-9 16:02:05 | 显示全部楼层
原来是疑难问题
回复

使用道具 举报

 楼主| 站站鱼 发表于 2010-8-13 15:51:03 | 显示全部楼层
回复

使用道具 举报

边邑飞鸿 发表于 2010-9-20 19:58:45 | 显示全部楼层
X1.5正式版还是不能使用不同的 forumdisplay模板
楼主解决这问题 了吗?
回复

使用道具 举报

love322093 发表于 2010-9-27 01:12:24 | 显示全部楼层
之前的帖子下面有写出来如何判断板块的,你仔细看下.
回复

使用道具 举报

love322093 发表于 2010-9-27 01:18:27 | 显示全部楼层
switch ($_G['fid']) {

case '29': $template = 'diy:forum/forumdisplay_pic:'.$_G['fid']; break;

case '7': $template = 'diy:forum/forumdisplay_pic:'.$_G['fid']; break;

default: $template = 'diy:forum/forumdisplay:'.$_G['fid'];
}

模版文件存在template\default\forum\下面

  1. forumdisplay_pic.htm
复制代码

评分

1

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-8 02:05 , Processed in 0.114975 second(s), 15 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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