回帖可见是针对用户发帖的时候使用了hide标签的功能,用户需要用使用hide标签的权限
hide标签可以直接使用hide标签,将要隐藏的内容包括在其中
也可以添加隐藏条件:[hide=数字]满足积分条件[/hide],当用户满足这个条件就会自动显示内容
回帖内容也是可以添加隐藏标签的,只要用户用使用hide标签权限,当用户回复了该主题的时候也会将内容显示出来
回帖可见对游客也是有效的,当一个用户在发帖的时候使用了hide标签,发布主题的时候会调用discuzcode函数对discuz代码进行解析,其中解析hide标签部分:- if($parsetype != 1 && strpos($msglower, '[/hide]') !== FALSE && $pid) {
- if(strpos($msglower, '[hide]') !== FALSE) {
- if($authorreplyexist === null) {
- $posttable = getposttablebytid($_G['tid']);
- $authorreplyexist = !$_G['forum']['ismoderator'] ? DB::result_first("SELECT pid FROM ".DB::table($posttable)." WHERE tid='$_G[tid]' AND ".($_G['uid'] ? "authorid='$_G[uid]'" : "authorid=0 AND useip='$_G[clientip]'")." LIMIT 1") : TRUE;
- }
- if($authorreplyexist) {
- $message = preg_replace("/\[hide\]\s*(.*?)\s*\[\/hide\]/is", tpl_hide_reply(), $message);
- } else {
- $message = preg_replace("/\[hide\](.*?)\[\/hide\]/is", tpl_hide_reply_hidden(), $message);
- $message .= '<script type="text/javascript">replyreload += \',\' + '.$pid.';</script>';
- }
- }
- if(strpos($msglower, '[hide=') !== FALSE) {
- $message = preg_replace("/\[hide=(\d+)\]\s*(.*?)\s*\[\/hide\]/ies", "creditshide(\\1,'\\2', $pid)", $message);
- }
- }
- }
复制代码 由于post表中,主题也是会被存在其中$authorreplyexist = !$_G['forum']['ismoderator'] ? DB::result_first("SELECT pid FROM ".DB::table($posttable)." WHERE tid='$_G[tid]' AND ".($_G['uid'] ? "authorid='$_G[uid]'" : "authorid=0 AND useip='$_G[clientip]'")." LIMIT 1") : TRUE;
这段代码能够查询出是被回复了(包括游客回复)或者是版主,则用$message = preg_replace("/\[hide\]\s*(.*?)\s*\[\/hide\]/is", tpl_hide_reply(), $message)将hide标签部分的代码替换掉,如果没有回复则用 tpl_hide_reply_hidden()处理掉hide标签部分的内容,这里的函数来自于:discuzcode.htm,其中的函数原理在这里不做介绍
|