Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

关于帖子里个人签名的分析

[复制链接]
dongdong0925 发表于 2011-6-26 20:48:15 | 显示全部楼层 |阅读模式
本帖最后由 dongdong0925 于 2011-6-26 20:48 编辑

首先在发帖/回帖的时候,在右侧的选择项里有使用个人签名的功能,如图。
勾选后发帖,相应处理进入source\include\post\post_newthread.php文件,在452行附近,相关代码
  1. $usesig =!empty($_G['gp_usesig']) && $_G['group']['maxsigsize'] ? 1 : 0;
复制代码


$usesig为是否使用个人签名的标志,1表示使用个人签名,0为不使用。
其中$_G['gp_usesig']就是前面说的使用个人签名的值,$_G['group']['maxsigsize']为所在用户组下的签名文字最大长度,如图。

回帖的处理类似,不做叙述。

下面看下浏览帖子内容时是如何处理个人签名的。
在source\module\forum\forum_viewthread.php文件,964行附近,代码如下。
  1. $post['signature'] = $post['usesig'] ? ($_G['setting']['sigviewcond'] ? (strlen($post['message']) > $_G['setting']['sigviewcond'] ? $post['signature'] : '') : $post['signature']) : '';
复制代码


首先判断是否使用个人签名,$post['usesig']即为前面的使用个人签名的值,1为使用,0为不使用。
$_G['setting']['sigviewcond']为签名显示条件,只有帖子字数大于这个数值后才显示签名,具体位置如图:

$post['signature']为个人签名。
第一个三元表达式:
  1. (strlen($post['message'])> $_G['setting']['sigviewcond'] ? $post['signature'] : '')
复制代码

这句代码为:
如果帖子内容的字数>签名显示条件设置的字数,就为$post['signature'],否则为空。

第二个三元表达式:
  1. ($_G['setting']['sigviewcond']? (strlen($post['message']) > $_G['setting']['sigviewcond'] ?$post['signature'] : '') : $post['signature'])
复制代码


如果设置了签名显示条件,就显示为上面第一个表达式的值,否则显示为个人签名。

第三个三元表达式:
  1. $post['usesig'] ?($_G['setting']['sigviewcond'] ? (strlen($post['message']) >$_G['setting']['sigviewcond'] ? $post['signature'] : '') : $post['signature']): '';
复制代码


如果帖子里选择了使用个人签名,则显示为上面第二个表达式的值,否则为空。

然后看模板中是如何处理的。
在template\default\forum\viewthread_node.htm,287行附近,代码如下:
  1. <!--{if$post['signature'] && ($_G['setting']['bannedmessages'] & 4&& ($post['memberstatus'] == '-1' || ($post['authorid'] &&!$post['username']) || ($post['groupid'] == 4 || $post['groupid'] == 5) ||($post['status'] & 1)))}--><divclass="sign">{lang member_signature_banned}</div><!--{elseif$post['signature'] && !$post['anonymous'] &&$showsignatures}--><divclass="sign"style="max-height:{$_G['setting']['maxsigrows']}px;maxHeightIE:{$_G['setting']['maxsigrows']}px;">$post[signature]</div><!--{/if}-->
复制代码

  1. <!--{if$post['signature'] && ($_G['setting']['bannedmessages'] & 4&& ($post['memberstatus'] == '-1' || ($post['authorid'] &&!$post['username']) || ($post['groupid'] == 4 || $post['groupid'] == 5) ||($post['status'] & 1)))}--><divclass="sign">{lang member_signature_banned}</div>
复制代码

为用户被禁止下的显示情况,此时签名显示为签名被屏蔽。

  1. <!--{elseif$post['signature'] && !$post['anonymous'] &&$showsignatures}--><divclass="sign"style="max-height:{$_G['setting']['maxsigrows']}px;maxHeightIE:{$_G['setting']['maxsigrows']}px;">$post[signature]</div><!--{/if}-->
复制代码

为正常情况下的显示。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
marco187 发表于 2011-6-27 01:27:19 | 显示全部楼层
学习了
回复

使用道具 举报

mTT 发表于 2011-6-27 15:28:33 | 显示全部楼层
有学习到,就是太多字幕看的头大
回复

使用道具 举报

kaqiusacn 发表于 2011-7-6 03:58:58 | 显示全部楼层
受益非浅
回复

使用道具 举报

ARCHY` 发表于 2011-7-8 09:23:25 | 显示全部楼层
学习 路过
回复

使用道具 举报

luokai888 发表于 2011-8-22 11:09:47 | 显示全部楼层
学习也
回复

使用道具 举报

gualist 发表于 2011-8-22 11:54:05 | 显示全部楼层
这样的帖子多点就好了...
回复

使用道具 举报

轩嘉 发表于 2011-8-25 17:46:00 | 显示全部楼层
我想请问 您放代码那个标有01 02 03 04.....的框框 和 点击“复制代码”即可直接复制  是怎么弄的  是代码 还是什么其他的功能?

期待回复  谢谢//
回复

使用道具 举报

1980645791 发表于 2011-8-25 17:46:58 | 显示全部楼层
路过看看了
回复

使用道具 举报

luke75 发表于 2011-8-27 00:12:25 | 显示全部楼层
为什么很多人头像用女人啊!
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-12-4 16:42 , Processed in 0.029313 second(s), 6 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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