使用Discuz X2建立论坛后,有时候需要按城市或地区建立类似于分站的论坛,各城市都有自己的分区和版块。
Discuz X2在后台的论坛-->版块管理里添加新分区可以给相关的版块分组,每个城市分站可能会有多个分区,每个分区下有多个版块。
比如,邯郸分站要建立三个分区:会员专区、娱乐休闲、版务区,每个分区下还有相关的版块或子版块。
石家庄分站也要建立三个分区:快乐交友、原创文学、版主会客厅,每个分区下也有相关的版块或子版块。
当建立好这些分区和版块后,如果点击某个版块进入帖子列表后,左侧的论坛导航会显示论坛建立的所有分区和版块,如果我们需要建立十几个分站,每个分站都有若干个分区,每个分区又有版块,左侧的论坛导航里内容就会显示非常非常多,不利于浏览和跳转。所以,我们就需要进哪个版块的帖子列表,左侧的论坛导航就只显示这个版块所在分站的分区和版块。
基于以上这种需要,我们需要规定分区的名字格式,在每个分区前面都加上[分站名称],然后在程序中取出当前进入的版块所属分区的名称中的分站名称,然后再根据这个分站名称把分站下的所有分区取出来并显示。
需要修改template\default\forum\forumdisplay_leftside.htm模板文件。
修改后的forumdisplay_leftside.htm模板代码如下:
<!--{if $leftside['favorites']}-->
<h2 class="mbn"><a href="home.php?mod=space&do=favorite&type=forum">{lang favorite_forums}</a></h2>
<dl id="lf_fav" class="bdl_fav mbm">
<!--{loop $leftside['favorites'] $favfid $fdata}-->
<dd>
<a href="forum.php?mod=forumdisplay&fid=$favfid">$fdata[0]</a>
</dd>
<!--{/loop}-->
</dl>
<!--{else}-->
<h2 class="bdl_h">{lang forum_nav}</h2>
<!--{/if}-->
<!--{loop $leftside['forums'] $upfid $gdata}-->
<!--{if ($fgroupid == $upfid)}-->
<!--{eval $area=mb_substr($gdata['name'],mb_strpos($gdata['name'],'[',0,'utf-8'),mb_strpos($gdata['name'],']',0,'utf-8')+1,'utf-8');}-->
<!--{/if}-->
<!--{/loop}-->
<!--{loop $leftside['forums'] $upfid $gdata}-->
<!--{eval $gdataname=mb_substr($gdata['name'],mb_strpos($gdata['name'],'[',0,'utf-8'),mb_strpos($gdata['name'],']',0,'utf-8')+1,'utf-8')}-->
<!--{if $gdataname==$area}-->
<dl class="{if $fgroupid == $upfid}a{/if}" id="lf_$upfid">
<dt><a href="javascript:;" hidefocus="true" οnclick="leftside('lf_$upfid')" title="$gdata['name']">$gdata['name']</a></dt>
<!--{loop $gdata['sub'] $subfid $name}-->
<dd{if $_G['fid'] == $subfid || $_G['forum']['fup'] == $subfid} class="bdl_a"{/if}>
<a href="forum.php?mod=forumdisplay&fid=$subfid" title="$name">$name</a>
</dd>
<!--{/loop}-->
</dl>
<!--{/if}-->
<!--{/loop}-->