Discuz设置仅发帖本人和管理员可见的方法

avatar
avatar
吴 昊
15
文章
0
评论
2019年12月14日00:41:39 评论 1920字阅读6分24秒

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

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

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

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

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

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

方法如下:

  • 2.1打开修改文件:templates/default/post.htm
  • 2.2找到:
<input type="text" name="readperm" value="$thread[readperm]" class="txt" tabindex="1" />
  • 2.3修改为:
<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;的上方插入:
if(in_array($_G['fid'], array(6,9,8,10)) && $_G['adminid'] != 1 && $_G['forum_thread']['authorid'] != $_G['uid']){
showmessage('对不起,本版内容非发帖人或管理员不可查阅!');
}

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

原来是:

$incollection = getstatus($_G['forum_thread']['status'], 9);

$_G['forum_threadpay'] = FALSE;
if($_G['forum_thread']['price'] > 0 && $_G['forum_thread']['special'] == 0) {

最终修改为:

$incollection = getstatus($_G['forum_thread']['status'], 9);

if(in_array($_G['fid'], array(6,9,8,10)) && $_G['adminid'] != 1 && $_G['forum_thread']['authorid'] != $_G['uid']){
showmessage('对不起,本版内容非发帖人或管理员不可查阅!');
}

$_G['forum_threadpay'] = FALSE;
if($_G['forum_thread']['price'] > 0 && $_G['forum_thread']['special'] == 0) {

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

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

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

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

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

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

继续阅读
  • 我的支付宝
  • 支付宝扫一扫赞助
  • weinxin
  • 我的微信码
  • 微信钱包扫描赞助
  • weinxin
avatar
  • 本文由 发表于 2019年12月14日00:41:39
  • 除非特殊声明,本站文章均为原创,转载请务必保留本文链接
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: