相信很多使用discuz的朋友,都有想过能不能某一版块设置为仅发帖用户和管理员可见,用于论坛的问题反馈,或者投稿等私密版块。

但是Discuz后台里目前没有对应的功能设置!如果按用户组设置可浏览权限,可能用户都不能进去发帖!

目前有两种方法可以实现在特定版块里,内容只有用户本人和网站管理员或者版主可见,一种是设置“阅读权限”,第二种是直接某些版块对用户本人或那一用户可见。

第一种方法:设置阅读权限

1.用户自己在发帖的时候,在编辑页面,自己进行设置阅读权限!这样就本人和有阅读权限的用户组可见了!

2.如果每次要用户填阅读权限太麻烦,那就通过修改代码,使某一版块下发帖时默认设置阅读权限。

方法如下:

  • 2.1打开修改文件:templates/default/post.htm
  • 2.2找到:
  1. <input type="text" name="readperm" value="$thread[readperm]" class="txt" tabindex="1" />
  • 2.3修改为:
  1. <input type="text" name="readperm"{if in_array($fid,array(2,3,4,5))} value="255" readonly="readonly" {else} value="$thread[readperm]" {/if}class="txt" tabindex="1" />

保存修改后,即可实现某一版块,默认设置“阅读权限”。

其中的value="255",是“阅读权限”,根据你实际的用户组阅读权限设置(后台-用户-管理组-基本权限)进行填写。

其中的($fid,array(2,3,4,5)),里面的数字代表的是fid号,也就是板块ID,多个板块ID用半角逗号分开!

第二种方法:直接让版块对用户本人或那某用户可见

方法如下:

  • 1.打开修改文件:source\module\forum \forum_viewthread.PHP
  • 2.搜索:$_G['forum_threadpay'] = FALSE;(DZx3.4 在219行左右)
  • 3.在 $_G['forum_threadpay'] = FALSE;的上方插入:
  1. if(in_array($_G['fid'], array(6,9,8,10)) && $_G['adminid'] != 1 && $_G['forum_thread']['authorid'] != $_G['uid']){
  2. showmessage('对不起,本版内容非发帖人或管理员不可查阅!');
  3. }

切记是在上方插入,不是替换!

原来是:

  1. $incollection = getstatus($_G['forum_thread']['status'], 9);
  2. $_G['forum_threadpay'] = FALSE;
  3. if($_G['forum_thread']['price'] > 0 && $_G['forum_thread']['special'] == 0) {

最终修改为:

  1. $incollection = getstatus($_G['forum_thread']['status'], 9);
  2. if(in_array($_G['fid'], array(6,9,8,10)) && $_G['adminid'] != 1 && $_G['forum_thread']['authorid'] != $_G['uid']){
  3. showmessage('对不起,本版内容非发帖人或管理员不可查阅!');
  4. }
  5. $_G['forum_threadpay'] = FALSE;
  6. if($_G['forum_thread']['price'] > 0 && $_G['forum_thread']['special'] == 0) {

其中的array(6,9,8,10),是你要限制的版块ID,多个版块ID用半角逗号隔开“ , ”!

第三种方法:直接让版块对用户本人或那某一管理用户组可见

方法和上面第二种一样,只是代码不同,代码如下:
  1. if(in_array($_G['fid'], array(6,9,8,10)) && $_G['groupid'] != 1 && $_G['forum_thread']['authorid'] != $_G['uid']){
  2. showmessage('对不起,本版内容非发帖人或管理员不可查阅!');
  3. }

方法就是把第二个方法里的$_G['adminid']改为了:$_G['groupid'], “ groupid ”是用户组的意思,”= 1“是你想要设置的管理组ID,要自己去后台看!

这两个方法基本上适用X1.5、X2.0、X2.5、X3.0、X3.1、X3.2、X3.3、X3.4!

测试之前,记得先备份站点,以免出现意外!

原文 hf19.com/archives/18.html

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。