查看: 18|回覆: 2

[教程] 关于帖子里个人签名的分析

[複製鏈接]

69

主題

8

回帖

0

積分

热心网友

金币
8
閲讀權限
220
精華
0
威望
0
贡献
0
在線時間
0 小時
註冊時間
2011-1-9
發表於 2019-6-3 15:57:10 | 顯示全部樓層 |閲讀模式


首先在发帖/回帖的时候,在右侧的选择项里有使用个人签名的功能,如图。勾选后发帖,相应处理进入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}-->

为正常情况下的显示。
发帖
回覆

使用道具 舉報

11

主題

413

回帖

0

積分

热心网友

金币
413
閲讀權限
220
精華
0
威望
0
贡献
0
在線時間
0 小時
註冊時間
2010-11-29
發表於 2019-6-3 17:14:12 | 顯示全部樓層
感谢分享给
回覆

使用道具 舉報

11

主題

84

回帖

0

積分

热心网友

金币
84
閲讀權限
220
精華
0
威望
0
贡献
0
在線時間
0 小時
註冊時間
2008-1-11
發表於 2019-6-4 15:00:56 | 顯示全部樓層
感谢分享!!
回覆

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 立即注册

本版積分規則

相关侵权、举报、投诉及建议等,请发 E-mail:qiongdian@foxmail.com

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部