适合版本:D4.1 4.0
难易程度:中
数据库修改:有
版权:魔焰男孩
修改:BY odo_cd
4。2增加分板块控制的功能,见2楼,还有最后一个问题没解决了,就是在archiver里可以看到。。。。。。
首先我声明,第一次自己改这玩意,有点乱(我接触php和mysql只有一个月,其实不懂,只是对照到改),不免有BUG,不过我已经测试成功,有问题,请大家指出。
该插件已经解决后台控制的问题,但是还有个问题是在archiver中指定用户的帖子内容大家都能看,所以只有把arciver的连接隐藏了,希望高手能把这问题解决了
我确实需要这功能,并且看到很多人都在跟原作者的帖有后台功能,所以我自己弄出来了给自己用,同时分享给大家,也算回报。
原帖:
https://discuz.dismall.com/viewthread.php?tid=243891
1、在后台升级数据库:
- ALTER TABLE cdb_usergroups ADD allowreaduserpost int(1) DEFAULT '0' NOT NULL;
- ALTER TABLE cdb_threads ADD readuser Varchar(255) NOT NULL DEFAULT '';
复制代码
如果您已经安装原作者的版本,请不要用第2个升级数据库语句。
2、在post_newthread.htm中找到:
上面添加:
- <!--{if $allowreaduserpost}-->
- <tr>
- <td class="altbg1">本帖阅读用户:</td>
- <td class="altbg2"><input type="text" name="readuser" size="20"
- value=""> <span class="smalltxt">(允许浏览本帖的用户,多个用户请用半角 ',' 分隔
- ,留空为所有用户都能阅读)</span></td>
- </tr>
- <!--{/if}-->
复制代码
3、post_editpost.htm中找到
上面添加:
- <!--{if $allowreaduserpost}-->
- <tr>
- <td class="altbg1">本帖阅读用户:</td>
- <td class="altbg2"><input type="text" name="readuser" size="20"
- value=""> <span class="smalltxt">(允许浏览本帖的用户,多个用户请用半角 ',' 分隔
- ,留空为所有用户都能阅读)</span></td>
- </tr>
- <!--{/if}-->
复制代码
4、admin\groups.inc.php
查找
- showtype('usergroups_edit_thread');
复制代码
在下面一行添加:
- showsetting('usergroups_edit_allowreaduserpost', 'allowreaduserpostnew',
- $group['allowreaduserpost'], 'radio');
复制代码
查找
- allowhtml='$allowhtmlnew', allowpostpoll='$allowpostpollnew',
- allowdirectpost='$allowdirectpostnew', allowvote='$allowvotenew',
复制代码
在上面添加
- allowreaduserpost='$allowreaduserpostnew',
复制代码
5、admincp.lang.php
- 'usergroups_edit_thread' => '帖子相关',
复制代码
下添加:
- 'usergroups_edit_allowreaduserpost' => '是否允许发布指定用户帖',
复制代码
已经安装原作者的插件的不用重复以下步骤!
6、viewthread.htm中
- $thread['modaction'] || $thread['blog']
复制代码
在后面(不是下面)添加(注意前面有个空格):
再次查找:
- <!--{if $thread['readperm']}--> {lang readperm_thread} <span class="bold">$thread[readperm]</span> <!--{/if}-->
复制代码
在下面添加上:
- <!--{if $thread['readuser']}--> 本帖只有指定人员才能阅读 <!--{/if}-->
复制代码
修改完成后, 保存退出。
. 打开文件 ./include/newthread.inc.php, 查找:
- if(!$typeid && $forum['threadtypes']['required']) {
复制代码
在上面添加上:
- $readuser = isset($readuser) ? $readuser : '';
- if(strlen($readuser) > 255) {
- showmessage('您设置的指定阅读用户超过 255 个字符, 请返回修改。');
- }
复制代码
再次查找:
在后面(不是下面)添加(注意前面有个空格):
再来查找:
在后面(不是下面)添加(注意前面有个空格):
修改完成后, 保存退出。
7. 打开文件 ./include/editpost.inc.php, 查找:
- if(!$typeid && $forum['threadtypes']['required']) {
复制代码
在上面添加上:
- $readuser = isset($readuser) ? $readuser : '';
- if(strlen($readuser) > 255) {
- showmessage('您设置的指定阅读用户超过 255 个字符, 请返回修改。');
- }
复制代码
再次查找:
在后面(不是下面)添加(注意前面有个空格):
复制代码
修改完成后, 保存退出。
8. 打开文件 ./viewthread.php, 查找:
- $allowpaytoauthor = substr(sprintf('%02b', $forum['allowtrade']), -2, 1);
复制代码
在上面添加上:
- $readuser = explode(',', $thread['readuser']);
- $readchk = false;
- foreach($readuser as $chk_name => $chk_user) {
- if($discuz_user == $chk_user) {
- $readchk = true;
- break;
- }
- }
- unset($readuser, $chk_name, $chk_user);
- if($thread['readuser'] && !$readchk && ($adminid != 1) && ($thread['author'] != $discuz_user)) showmessage('对不起, 本帖只有指定人员才能阅读, 您不在指定列表中, 因此无权阅读本帖。');
复制代码
修改完成后, 保存退出。
完工。。。。。。。。。。
反安装:
- ALTER TABLE cdb_threads DROP readuser;
- ALTER TABLE cdb_usergroups drop allowreaduserpost;
复制代码
再依次恢复改动的文件,建议再改动之前作备份。
附带说明:
在主题列表里面显示设置了阅读用户的帖子为“认证帖子”, 方法如下:
打开模版文件 forumdisplay.htm (一般位于 ./templates/default/ 目录里, 安装多个模版的每个模版都要修改), 查找:
- <!--{if $thread['readperm']}--> - [{lang readperm} <span class="bold">$thread[readperm]</span>]<!--{/if}-->
复制代码
在下面添加上:
- <!--{if $thread['readuser']}--> - [认证帖子]<!--{/if}-->
复制代码
成功了的回来跟一下。。。。
修改完成后, 保存退出。
[ 本帖最后由 odo_cd 于 2006-4-3 22:00 编辑 ] |