国产又猛又爽又黄视频|在线观看人成视频免费|少妇高潮太爽了在线视频|911国产免费无码专区|特黄做受又大又粗又长大片|欧美一级二级免费在线观看|日日夜人人澡人人澡人人看免|欧洲午夜精品一级毛片在线播放

讓Discuz某些指定版塊的發(fā)帖時的默認(rèn)權(quán)限不為0,為其他的數(shù)值

2014-10-23 13:34 欄目:技術(shù)開發(fā) 查看(23312)

有時候我們有這樣的需求:論壇有幾十個版塊,但要某一個版塊或者多個版塊實現(xiàn)游客和普通用戶及管理員都能瀏覽版塊列表,而只有管理員(包含版主、超級版主、管理員)能訪問具體的內(nèi)頁內(nèi)容。大家可能馬上想到去后臺設(shè)置對應(yīng)的內(nèi)容。比如編輯某個版塊的訪問權(quán)限或者某個用戶組的閱讀權(quán)限。

但問題來了,dz默認(rèn)的權(quán)限控制貌似不能實現(xiàn)我們的這個需求,比如你設(shè)置普通用戶不能瀏覽版塊,那么雖然確實實現(xiàn)不能瀏覽內(nèi)容,但主題列表頁不能瀏覽了。相應(yīng)的我們?nèi)タ刂朴脩舻拈喿x權(quán)限也是不行的。

那我能想到比較好處理的就有兩種方式了:1、通過控制帖子內(nèi)頁來進行權(quán)限控制;2、通過發(fā)帖時的默認(rèn)閱讀權(quán)限進行控制。而接下來我們就說后面那一種,比如我們把默認(rèn)的發(fā)帖時的默認(rèn)閱讀權(quán)限是100或者最高的255。

實現(xiàn)的效果就是這樣:原來用戶發(fā)帖的時候,如果他沒有設(shè)置閱讀權(quán)限的那么就是0,而就算有設(shè)置閱讀權(quán)限的默認(rèn)情況下也是0。而我們就要進行相應(yīng)的設(shè)置默認(rèn)的不是0,而是其他的數(shù)值。這里就提供一個思路了,首先找到設(shè)置閱讀權(quán)限的HTML位置。結(jié)果是在template/default/forum/post_editor_attribute.htm,當(dāng)然如果你的當(dāng)前使用的模板有post_editor_attribute這個文件,就是找你當(dāng)前模板中的這個文件。大概在60行左右有以下代碼:
<select name=”readperm” id=”readperm” class=”ps” style=”width:90px” onchange=”extraCheck(1)”>
<option value=””>{lang unlimited}</option>
<!–{loop $_G['cache']['groupreadaccess'] $val}–>
<option value=”$val[readaccess]” title=”{lang readperm}: $val[readaccess]“{if $thread['readperm'] == $val[readaccess]} selected=”selected”{/if}>$val[grouptitle]</option>
<!–{/loop}–>
<option value=”255″{if $thread['readperm'] == 255} selected=”selected”{/if}>{lang highest_right}</option>
</select>
這里就是默認(rèn)的選擇閱讀權(quán)限的地方,比如默認(rèn)情況下就是
<option value=””>{lang unlimited}</option>
也就是說不限制閱讀權(quán)限
現(xiàn)在假設(shè)我們需要給fid=5的版塊默認(rèn)權(quán)限為255。這個時候可以把上面改成中加入以下代碼
<select name=”readperm” id=”readperm” class=”ps” style=”width:90px” onchange=”extraCheck(1)”>
<!–{if $_G[forum][fid]==5) }–>
<option value=”255″>最高權(quán)限</option>
<!–{else}–>
<!–{loop $_G['cache']['groupreadaccess'] $val}–>
<option value=”$val[readaccess]” title=”{lang readperm}: $val[readaccess]“{if $thread['readperm'] == $val[readaccess]} selected=”selected”{/if}>$val[grouptitle]</option>
<!–{/loop}–>
<!–{/if}–>
<option value=”255″{if $thread['readperm'] == 255} selected=”selected”{/if}>{lang highest_right}</option>
</select>
其實就是加入了
<!–{if $_G[forum][fid]==5) }–>
<option value=”255″>最高權(quán)限</option>
<!–{else}–>
意思是如果是是版塊5就執(zhí)行只有一個選項的,否則就是默認(rèn)情況下的。
如果要控制多個版塊的,那么則需要把
<!–{if $_G[forum][fid]==5) }–>
改成
<!–{if in_array($_G[forum][fid],array(5,6,7)) }–>
如果是把閱讀權(quán)限弄成默認(rèn)為100,則只需把<option value=”255″>最高權(quán)限</option>中的255改成一百就行了。
再高級一點,如果是要就算是5,6,7版塊弄成管理員可以設(shè)置多個閱讀權(quán)限,比如可以設(shè)置100以上,那么我們可以在
<option value=”100″>最高權(quán)限</option>下面在加一段
<!–{loop $_G['cache']['groupreadaccess'] $val}–>

<!–{if $val[readaccess]>=100}–>
<option value=”$val[readaccess]” title=”{lang readperm}: $val[readaccess]“{if $thread['readperm'] == $val[readaccess]} selected=”selected”{/if}>$val[grouptitle]</option>

<!–{/if}–>

<!–{/loop}–>

意思是如果后臺設(shè)置的用戶組的權(quán)限大于等于100則出現(xiàn)在這里可供選擇的列表里面。

最后總結(jié)下,其實這只是一個簡單的原理,大家可以進一步把它完善,比如可以寫成更加人性化的插件。同時其實上面還是有一點問題的。比如說就按照最原始的的把版塊5設(shè)置默認(rèn)的閱讀權(quán)限為255,但如果我發(fā)帖的時候可以用調(diào)試工具把value值修改為0或者其他的依然可以提交上去,然后生成的帖子就不是閱讀權(quán)限為255了。因此還是有很多可以完善的地方,這個就留給大家吧。

與我們的項目經(jīng)理聯(lián)系
掃二維碼與項目經(jīng)理溝通

我們在微信上24小時期待你的聲音

解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流

轉(zhuǎn)載請注明出處:讓Discuz某些指定版塊的發(fā)帖時的默認(rèn)權(quán)限不為0,為其他的數(shù)值 - 微構(gòu)網(wǎng)絡(luò)
分享: