广告位招租 qq245909083
广告
广告

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

分享时间:2020-03-08 311 热度℃
我们在版块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。可根据自己的需要做更多判断。
返回顶部