Discuz! 官方交流社區(qū)
標(biāo)題: 關(guān)于帖子里個(gè)人簽名的分析 [打印本頁]
作者: 我是小站長 時(shí)間: 2019-6-3 15:57
標(biāo)題: 關(guān)于帖子里個(gè)人簽名的分析
本帖最后由 我是小站長 于 2019-6-3 15:57 編輯
首先在發(fā)帖/回帖的時(shí)候,在右側(cè)的選擇項(xiàng)里有使用個(gè)人簽名的功能,如圖。
[attach]981652[/attach]
勾選后發(fā)帖,相應(yīng)處理進(jìn)入source\include\post\post_newthread.php文件,在452行附近,相關(guān)代碼
- $usesig =!empty($_G['gp_usesig']) && $_G['group']['maxsigsize'] ? 1 : 0;
復(fù)制代碼
$usesig為是否使用個(gè)人簽名的標(biāo)志,1表示使用個(gè)人簽名,0為不使用。
其中$_G['gp_usesig']就是前面說的使用個(gè)人簽名的值,$_G['group']['maxsigsize']為所在用戶組下的簽名文字最大長度,如圖。
[attach]981650[/attach]
回帖的處理類似,不做敘述。
下面看下瀏覽帖子內(nèi)容時(shí)是如何處理個(gè)人簽名的。
在source\module\forum\forum_viewthread.php文件,964行附近,代碼如下。
- $post['signature'] = $post['usesig'] ? ($_G['setting']['sigviewcond'] ? (strlen($post['message']) > $_G['setting']['sigviewcond'] ? $post['signature'] : '') : $post['signature']) : '';
復(fù)制代碼
首先判斷是否使用個(gè)人簽名,$post['usesig']即為前面的使用個(gè)人簽名的值,1為使用,0為不使用。
$_G['setting']['sigviewcond']為簽名顯示條件,只有帖子字?jǐn)?shù)大于這個(gè)數(shù)值后才顯示簽名,具體位置如圖:
[attach]981651[/attach]
$post['signature']為個(gè)人簽名。
第一個(gè)三元表達(dá)式:
- (strlen($post['message'])> $_G['setting']['sigviewcond'] ? $post['signature'] : '')
復(fù)制代碼
這句代碼為:
如果帖子內(nèi)容的字?jǐn)?shù)>簽名顯示條件設(shè)置的字?jǐn)?shù),就為$post['signature'],否則為空。
第二個(gè)三元表達(dá)式:
- ($_G['setting']['sigviewcond']? (strlen($post['message']) > $_G['setting']['sigviewcond'] ?$post['signature'] : '') : $post['signature'])
復(fù)制代碼
如果設(shè)置了簽名顯示條件,就顯示為上面第一個(gè)表達(dá)式的值,否則顯示為個(gè)人簽名。
第三個(gè)三元表達(dá)式:
- $post['usesig'] ?($_G['setting']['sigviewcond'] ? (strlen($post['message']) >$_G['setting']['sigviewcond'] ? $post['signature'] : '') : $post['signature']): '';
復(fù)制代碼
如果帖子里選擇了使用個(gè)人簽名,則顯示為上面第二個(gè)表達(dá)式的值,否則為空。
然后看模板中是如何處理的。
在template\default\forum\viewthread_node.htm,287行附近,代碼如下:
- <!--{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}-->
復(fù)制代碼
- <!--{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>
復(fù)制代碼
為用戶被禁止下的顯示情況,此時(shí)簽名顯示為簽名被屏蔽。
- <!--{elseif$post['signature'] && !$post['anonymous'] &&$showsignatures}--><divclass="sign"style="max-height:{$_G['setting']['maxsigrows']}px;maxHeightIE:{$_G['setting']['maxsigrows']}px;">$post[signature]</div><!--{/if}-->
復(fù)制代碼
為正常情況下的顯示。
作者: 耗子 時(shí)間: 2019-6-3 17:14
感謝分享給
作者: onetheme 時(shí)間: 2019-6-4 15:00
感謝分享!!
歡迎光臨 Discuz! 官方交流社區(qū) (http://www.9999xn.com/) |
Powered by Discuz! W1.0 |