默認情況下,帖子設(shè)置樓層背景只限于本樓層,現(xiàn)在我要將它改為:當主帖設(shè)置了背景,就把這個背景作為整個頁面(body)的背景,回復樓層不變,依然是局限于自己樓層。
完整經(jīng)過:
1.獲得主題帖背景圖。
在主帖設(shè)置好背景圖后,會在帖子內(nèi)容字段“message”中存儲一段如“[ postbg]bg5.png[ /postbg]”的標簽,系統(tǒng)處理之后將它變成了
$_G['forum_posthtml']['header'][$post[pid]]
復制代碼
這句在viewthread_node_body.htm里,會生成一段樣式代碼,例如
<style type="text/css">#pid1498{background-image:url("static/image/postbg/bg1.png");}</style>
復制代碼
圖片地址看到了,但需要提取下才能拿出來用。
2.把樣式代碼中的圖片提取出來。
正則提取語句
<!--{eval $mage_match=preg_match("|background-image:url\((.*)\);|U", $_G['forum_posthtml']['header'][$post[pid]], $result);}-->
復制代碼
$result是個數(shù)組,兩項:
$result[0]是background-image:url("static/image/postbg/bg1.png");
$result[1]是"static/image/postbg/bg1.png"
完整的代碼,這里以$result[1]為例,可在viewthread_node_body.htm里頂部加一段
<!--{if $post['first']}-->
<!--{eval $mage_match=preg_match("|background-image:url\((.*)\);|U", $_G['forum_posthtml']['header'][$post[pid]], $result);}-->
<style>body{ {$result[0]} }</style>
<!--{/if}-->
復制代碼
意思是,如果是主帖,body使用提取出來的主帖樓層背景。
3.把主帖樓層里的背景去掉
在viewthread_node_body.htm里查找
$_G['forum_posthtml']['header'][$post[pid]]
復制代碼
給它套上判斷,即
<!--{if !$post['first']}-->$_G['forum_posthtml']['header'][$post[pid]]<!--{/if}-->
復制代碼
帖子背景在回復帖生效。
end。
* 如果出現(xiàn)設(shè)置過帖子背景后,再編輯時,編輯器無法切換可視化、部分按鈕失效的情況,打開/template/default/common/editor.htm,頂部的
<script type="text/javascript" src="{$_G['setting']['jspath']}common_postimg.js?{VERHASH}"></script>
復制代碼
改為
<script type="text/javascript" src="data/cache/common_postimg.js?{VERHASH}"></script>
復制代碼
X3.4版本沒有這句,加上就行了,這是自帶問題,與俺無關(guān),詳情請訪問官方論壇查詢。