老张小站

  1. 欢迎光临

    感谢访问老张的博客!

  • 1
1,581

Discuz X3.* 根据用户权限关联版块

分类 网站技术/村民张先生 发布于 2019-04-01 14:46
2

我们在版块A的“扩展设置 - 关联群组/版块”中添加版块B的fid后,版块A中将会显示版块B的帖子,但无论游客还是任何登录用户,都会无区别的看到关联内容。如何进行权限控制呢,比如只让用户组1、2、3在版块A中可以看到版块B的内容,而游客和其它用户不可见。

打开 source/module/forum/forum_forumdisplay.php 文件,查找:

if($_G['forum']['relatedgroup']) {
	$relatedgroup = explode(',', $_G['forum']['relatedgroup']);
	$relatedgroup[] = $_G['fid'];
	$filterarr['inforum'] = $relatedgroup;
} else {
	$filterarr['inforum'] = $_G['fid'];
}

将其替换为:

if($_G['forum']['relatedgroup'] || $relatedgroup_c) {
	if($_G['forum']['relatedgroup'] && $relatedgroup_c) {
		$relatedgroup = explode(',', $_G['forum']['relatedgroup']);
		$relatedgroup_c = explode(',', $relatedgroup_c);
		$relatedgroup = array_merge($relatedgroup, $relatedgroup_c);
	} elseif(!$_G['forum']['relatedgroup']) {
		$relatedgroup = $_G['forum']['relatedgroup'] = explode(',', $relatedgroup_c);
	} else {
		$relatedgroup = explode(',', $_G['forum']['relatedgroup']);
	}
	$relatedgroup[] = $_G['fid'];
	$filterarr['inforum'] = $relatedgroup;
} else {
	$filterarr['inforum'] = $_G['fid'];
}

以上代码中增加了一个 $relatedgroup_c 变量,在其前方定义即可,例如:

if($_G['fid'] == '1' && in_array($_G['groupid'], array(1,2,3))) $relatedgroup_c = '5,6';
if($_G['fid'] == '2' && in_array($_G['groupid'], array(10,11))) $relatedgroup_c = '7';

表示在fid为1的版块中,用户组1/2/3浏览时关联版块5/6;在fid为2的版块中,用户组10/11浏览时关联版块7。可根据自己的需要做更多判断。

欢迎转载分享,转载请注明 来源:大张小站 https://www.zhang.cq.cn/20192135.html
若您喜欢这篇文章,欢迎订阅老张小站以获得最新内容。 / 欢迎交流探讨,请发电子邮件至 mail[at]vdazhang.com 。


已经有 2 条群众意见

  1. solife /2019-07-14 13:05

    希望继续更新DZ的相关修改资料。 回应

    #1
  2. 粉丝 /2019-08-12 17:11

    很用心的一个站。在Discuz有这么一个问题,不知道站长注意到没有?就是如果DZ站点某版块开启了审核,那么普通会员(非管理员)保存草稿的时候,帖子会直接进入审核,审核通过后,就直接发表了。换句话说,保存草稿就没有意义了!不知道站长有什么解决方法没?

    我任何合理的流程是,点击“保存草稿”时,直接保存为草稿,等到点击“发表”的时候,才进入审核机制。 回应

    #2

欢迎谈谈你的看法(无须登录) *正文中请勿包含"http://"否则将被拦截