最近研究了下仿小米的论坛模式,看大多数都是使用导读修改,感觉不是很好,显示不完整,自己研究了下,发现使用论坛的关联功能也能实现此功能,而且更加方便。
1、开新版块,编辑版块-扩展设置,关联群组/版块,把其它版本的ID写进去;
2、复制forum.php文件,改为其它名字如123.php,修改
define('APPTYPEID', 2);
define('CURSCRIPT', 'forum');后面添加
$_GET +=array('mod'=>'forumdisplay','fid'=>128);
3、界面-导航设置-主导航,添加新板块的链接,设置为123.php;
4、修改forumdisplay.htm和其它需要修改的文件,添加判断代码:
<!--{if $_G[fid]=='128'}-->
<!--{else}-->
<!--{/if}-->
如新板块的发帖链接,需要修改为直接弹出板块选择
<!--{if $_G[fid]=='128'}-->
<a class="post_btn" onclick="showWindow('nav', this.href);return false;" href="forum.php?mod=misc&action=nav&special=0&"><img src="$_G['style'][styleimgdir]/pn_post_big.png" alt="发新帖"/></a>
<!--{else}-->
<a href="javascript:;" id="newspecial" onmouseover="$('newspecial').id = 'newspecialtmp';this.id = 'newspecial';showMenu({'ctrlid':this.id})"{if !$_G['forum']['allowspecialonly'] && empty($_G['forum']['picstyle']) && !$_G['forum']['threadsorts']['required']} onclick="showWindow('newthread', 'forum.php?mod=post&action=newthread&fid=$_G[fid]')"{else} onclick="location.href='forum.php?mod=post&action=newthread&fid=$_G[fid]';return false;"{/if} title="{lang send_posts}"><img src="$_G['style'][styleimgdir]/pn_post_big.png" alt="发新帖"/></a>
<!--{/if}-->
还有新板块的路径修改:
<!--{if $_G[fid]=='128'}-->
<a href="./" class="nvhm" title="{lang homepage}">$_G[setting][bbname]</a><em>»</em><a href="forum.php">论坛</a>
<!--{else}-->
<a href="./" class="nvhm" title="{lang homepage}">$_G[setting][bbname]</a><em>»</em><a href="forum.php">{$_G[setting][navs][2][navname]}</a>$navigation
<!--{/if}-->
当然,根据不同模版还有其它需要修改地方,按照此方法自行修改即可;
5、解决访问新板块,导航栏的CSS定位却在版块的方法
修改header.htm,找到相应的导航栏代码,如:
<div class="deansnav">
<!--{eval $mnid = getcurrentnav();}-->
<ul>
<!--{loop $_G['setting']['navs'] $nav}-->
<!--{if $nav['available'] && (!$nav['level'] || ($nav['level'] == 1 && $_G['uid']) || ($nav['level'] == 2 && $_G['adminid'] > 0) || ($nav['level'] == 3 && $_G['adminid'] == 1))}--><li {if $mnid == $nav[navid]}class="deancurrent" {/if}$nav[nav]></li><!--{/if}-->
<!--{/loop}-->
</ul>
<!--{hook/global_nav_extra}-->
</div>
如果要彻底修改,可以修改getcurrentnav(),但我为了图方便,直接修改了$mnid的赋值,这块$mnid的值可以在页面源代码里看到;
<div class="deansnav">
<!--{eval $mnid = getcurrentnav();}-->
<!--{if $_G[fid]=='128'}-->
<!--{eval $mnid = 'mn_N60ee'}-->
<!--{/if}-->
<ul>
<!--{loop $_G['setting']['navs'] $nav}-->
<!--{if $nav['available'] && (!$nav['level'] || ($nav['level'] == 1 && $_G['uid']) || ($nav['level'] == 2 && $_G['adminid'] > 0) || ($nav['level'] == 3 && $_G['adminid'] == 1))}--><li {if $mnid == $nav[navid]}class="deancurrent" {/if}$nav[nav]></li><!--{/if}-->
<!--{/loop}-->
</ul>
<!--{hook/global_nav_extra}-->
</div>
基本上修改就结束了,如果对其它样式不满意,也可根据此方法修改模版的其它文件即可。
PS:如果要屏蔽快速发帖中的隐藏论坛,修改post_forumselect.htm文件
if(fid != '') {
s += '<p><a href="javascript:;" ondblclick="locationforums(2, ' + fid + '\)" onclick="switchforums(this, 2, ' + fid + ')"' + ($('fs_subforum_' + fid) ? ' class="pbsb"' : '') + '>' + lis[i].innerHTML + '</a></p>';
}
修改为
if(fid != '' && fid != '128') {
s += '<p><a href="javascript:;" ondblclick="locationforums(2, ' + fid + '\)" onclick="switchforums(this, 2, ' + fid + ')"' + ($('fs_subforum_' + fid) ? ' class="pbsb"' : '') + '>' + lis[i].innerHTML + '</a></p>';
}
文章评论