谢大蟀智能家居

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 33|回复: 0

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

[复制链接]

39

主题

44

帖子

152

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
152
发表于 2025-4-3 03:00:45 | 显示全部楼层 |阅读模式
相信很多使用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!
测试之前,记得先备份站点,以免出现意外!

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|谢大蟀智能家居 ( 闽ICP备18020392号-1 )

GMT+8, 2025-4-19 14:25 , Processed in 0.059087 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表