本帖最后由 imaxis 于 2012-5-10 17:40 编辑
本帖提供将官方模板子版块展示方式修改为选项卡功能 (第一次发帖 敬请拍砖)
本人Discuz! X2.5亲测可用。
论坛已经有人提过这样的问题: 怎么设置子版块选项卡式浏览 ,网上搜索 无解。只好自己改模版。
Step 1:
打开 template\default\forum\forumdisplay.htm,查找 <!--{if $subexists && $_G['page'] == 1}-->
我们可以看到显示子版块调用的是 forumdisplay_subforum.htm模板
Step 2:
谨慎起见,复制forumdisplay_subforum.htm一份,并重命名为 forumdisplay_subforum_tab.htm
打开 forumdisplay_subforum_tab.htm
第一行 插入代码:- <ul id="subforum_tab" class="ttp bm cl">
- <li id="subforum_all" class="xw1 a"><a href="forum.php?mod=forumdisplay&fid={$_G[forum][fid]}">全部</a></li>
- <!--{loop $sublist $sub}-->
- <!--{eval $forumurltab = !empty($sub['domain']) && !empty($_G['setting']['domain']['root']['forum']) ? 'http://'.$sub['domain'].'.'.$_G['setting']['domain']['root']['forum'] : 'forum.php?mod=forumdisplay&fid='.$sub['fid'];}-->
- <li><a href="$forumurltab" {if !empty($sub[redirect])}target="_blank"{/if} style="{if !empty($sub[extra][namecolor])}color: {$sub[extra][namecolor]};{/if}">$sub[name]</a></li>
- <!--{/loop}-->
- </ul>
复制代码 保存。OK,具有选项卡UI的子版块模板完成。
打开 forumdisplay.htm查找 <!--{if $subexists && $_G['page'] == 1}--> 将 if 条件里面的 代码替换为调用我们刚才创建的模版 代码为:<!--{template forum/forumdisplay_subforum_tab}-->
保存。打开论坛随便一个有子版块的版块,即可看到。
截图看附件。
go on..........
点击子版块链接,打开发现选项卡又消失了!!! (我要实现的是 最末级版块要显示同级版块选项卡)
Step 3:
继续打开template\default\forum\forumdisplay.htm,查找 <!--{if $subexists && $_G['page'] == 1}-->,问题就出在这个if判断,没有子版块就不会调用任何模版,肯定不会有HTML输出了。so 我的思路是另加一个提供展示同级版块的模版,在else里调用。
查找<!--{if $subexists && $_G['page'] == 1}--> 目前代码为:<!--{if $subexists && $_G['page'] == 1}--><!--{template forum/forumdisplay_subforum_tab}--><!--{/if}-->替换为:- <!--{if $subexists && $_G['page'] == 1}-->
- <!--{template forum/forumdisplay_subforum_tab}-->
- <!--{else}-->
- <!--{template forum/forumdisplay_levelforum_tab}-->
- <!--{/if}-->
复制代码 下一步将我们之前新增的forumdisplay_subforum_tab.htm 复制一份 重命名为:forumdisplay_levelforum_tab.htm并打开,代码全部删掉,替换为:- <ul id="sameforum_tab" class="ttp bm cl">
- <li id="sameforum_all"><a href="forum.php?mod=forumdisplay&fid={$_G['forum']['fup']}">全部</a></li>
- <!--{loop $sameLevelForums $sub}-->
- <!--{eval $forumurltab = !empty($sub['domain']) && !empty($_G['setting']['domain']['root']['forum']) ? 'http://'.$sub['domain'].'.'.$_G['setting']['domain']['root']['forum'] : 'forum.php?mod=forumdisplay&fid='.$sub['fid'];}-->
- <li {if $sub[fid]==$_G['fid'] }class="xw1 a"{/if}><a href="$forumurltab" {if !empty($sub[redirect])}target="_blank"{/if} style="{if !empty($sub[extra][namecolor])}color: {$sub[extra][namecolor]};{/if}">$sub[name]</a></li>
- <!--{/loop}-->
- </ul>
复制代码 最后一步:
打开 source\moudle\forum\forum_forumdisplay.php 查找 $page = $_G['setting']['threadmaxpages'] && $page > $_G['setting']['threadmaxpages'] ? 1 : $page;
在下面添加:- //---edit
- $sameLevelForums = array();
- $sameLevelForumsquery = C::t('forum_forum')->fetch_all_info_by_fids(0, 'available', 0, $_G['forum']['fup'], 1, 0, 0, 'sub');
- foreach($sameLevelForumsquery as $sameLvl) {
- $sameLevelForums[] = $sameLvl;
- }
复制代码 完工!
本人刚接触discuz 对discuz PHP都不熟,如有任何问题还请各位大拿指正。未测试对discuz其他模块造成影响!!!
|