Discuz教程网

[代码修改] 厌倦了discuz子版块的展示UI?换成选项卡试试[代码]

[复制链接]
authicon dly 发表于 2012-5-11 22:58:10 | 显示全部楼层 |阅读模式
父级版块
172331f9mntank9z93kkpp.jpg
下级版块
174017jp9zj8jwpc438jij.jpg

本帖提供将官方模板子版块展示方式修改为选项卡功能 (第一次发帖 敬请拍砖)
本人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
   第一行 插入代码:
  1. <ul id="subforum_tab" class="ttp bm cl">
  2. <li id="subforum_all" class="xw1 a"><a href="forum.php?mod=forumdisplay&fid={$_G[forum][fid]}">全部</a></li>
  3. <!--{loop $sublist $sub}-->
  4. <!--{eval $forumurltab = !empty($sub['domain']) && !empty($_G['setting']['domain']['root']['forum']) ? 'http://'.$sub['domain'].'.'.$_G['setting']['domain']['root']['forum'] : 'https://www.discuz.1314study.com/forum.php?mod=forumdisplay&fid='.$sub['fid'];}-->
  5. <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>
  6. <!--{/loop}-->
  7. </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}-->替换为:
  1. <!--{if $subexists && $_G['page'] == 1}-->
  2. <!--{template forum/forumdisplay_subforum_tab}-->
  3. <!--{else}-->
  4. <!--{template forum/forumdisplay_levelforum_tab}-->
  5. <!--{/if}-->
复制代码

下一步将我们之前新增的forumdisplay_subforum_tab.htm 复制一份 重命名为:forumdisplay_levelforum_tab.htm并打开,代码全部删掉,替换为:
  1. <ul id="sameforum_tab" class="ttp bm cl">
  2. <li id="sameforum_all"><a href="forum.php?mod=forumdisplay&fid={$_G['forum']['fup']}">全部</a></li>
  3. <!--{loop $sameLevelForums $sub}-->
  4. <!--{eval $forumurltab = !empty($sub['domain']) && !empty($_G['setting']['domain']['root']['forum']) ? 'http://'.$sub['domain'].'.'.$_G['setting']['domain']['root']['forum'] : 'https://www.discuz.1314study.com/forum.php?mod=forumdisplay&fid='.$sub['fid'];}-->
  5. <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>
  6. <!--{/loop}-->
  7. </ul>
复制代码

最后一步:
    打开 source\moudle\forum\forum_forumdisplay.php 查找 $page = $_G['setting']['threadmaxpages'] && $page > $_G['setting']['threadmaxpages'] ? 1 : $page;
在下面添加:
  1. //---edit
  2. $sameLevelForums = array();
  3. $sameLevelForumsquery = C::t('forum_forum')->fetch_all_info_by_fids(0, 'available', 0, $_G['forum']['fup'], 1, 0, 0, 'sub');
  4. foreach($sameLevelForumsquery as $sameLvl) {
  5. $sameLevelForums[] = $sameLvl;
  6. }
复制代码

完工!
本人刚接触discuz 对discuz PHP都不熟,如有任何问题还请各位大拿指正。未测试对discuz其他模块造成影响!!!



上一篇:用笨方法实现让游客参与活动--X2.5版本
下一篇:Discuz! X2.0 X2.5去掉附件下载提示
authicon 叶落无痕 发表于 2012-6-1 22:50:25 | 显示全部楼层
我只是路过打酱油的。真是好贴啊……
authicon 没问题 发表于 2012-6-6 14:59:48 | 显示全部楼层
本帖最后由 没问题 于 2012-6-6 15:00 编辑

好东西 谢谢分享
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1314学习网 ( 浙ICP备10214163号 )

GMT+8, 2025-5-3 01:34

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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