2024国产成人精品免费视频|日本免费一区二区三区毛片|久久97超碰色中文字幕|亚洲天堂a中文字幕

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

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

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

但問題來了,dz默認的權限控制貌似不能實現(xiàn)我們的這個需求,比如你設置普通用戶不能瀏覽版塊,那么雖然確實實現(xiàn)不能瀏覽內容,但主題列表頁不能瀏覽了。相應的我們去控制用戶的閱讀權限也是不行的。

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

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

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

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

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

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

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

轉載請注明出處:讓Discuz某些指定版塊的發(fā)帖時的默認權限不為0,為其他的數(shù)值 - 微構網(wǎng)絡
分享:
仪陇县| 扶沟县| 安陆市| 民乐县| 潜山县| 寻甸| 六盘水市| 开化县| 汝城县| 白山市| 龙南县| 宕昌县| 合川市| 确山县| 永寿县| 公安县| 邯郸县| 商城县| 佛冈县| 乌拉特中旗| 旬邑县| 铜川市| 子长县| 宁国市| 哈尔滨市| 吴桥县| 北票市| 丰县| 长丰县| 邢台县| 疏勒县| 保康县| 泌阳县| 湘西| 平定县| 伊金霍洛旗| 德化县| 河间市| 廉江市| 盘山县| 东阳市|