我們知道/include/arc.archives.class.php文件是處理文章信息的,在文章詳情頁(yè)面的模版文件中那些dede標(biāo)簽的顯示數(shù)據(jù)就是來源于此,這篇文章中主要討論body字段。
前面我已經(jīng)寫了一篇如何為文章顯示提供一個(gè)安卓客戶端接口的文章 ,其中就需要對(duì)顯示在android客戶端上的文章內(nèi)容做一些處理,需要將原本問相對(duì)路徑的url全部替換成帶域名的絕對(duì)路徑。
我自己寫了一個(gè)實(shí)現(xiàn)替換url的函數(shù)放在archive.helper.php中,于是我在arc.archives.class.php中自認(rèn)為合適的地方調(diào)用了替換body url連接的方法,結(jié)果發(fā)現(xiàn)根本不行,得到的body是為空的。
經(jīng)過分析發(fā)現(xiàn)在archives類的構(gòu)造函數(shù)調(diào)用之后立即處理body是沒有用的,因?yàn)閍rchives類的構(gòu)造方法中,獲取的都是文章主表的信息,里面沒有body的內(nèi)容,body存在于文章附表中。而附表字段的獲取在這個(gè)函數(shù)中:
function ParAddTable() |
因此我要修改$this->Fields['body']的值,必須在這個(gè)函數(shù)之后。 ParAddTable()
是在display()中被調(diào)用的,所以我只能在display()中做處理了。
事實(shí)上這仍然行不通,正確的做法是在ParAddTable()
中的 “//處理要分頁(yè)顯示的字段” 代碼之前。
不過下面幾行代碼如果弄清楚了的話 會(huì)有所幫助:
$this->SplitFields = explode("#a#",$this->Fields[$this->SplitPageField]); |
通過打印,發(fā)現(xiàn)$
this
->SplitPageField
的值就是body,那么$
this
->SplitFields
就是body字段的分段數(shù)組了,其中#a#
的a實(shí)際上是p,但是如果我這樣寫后面文字的就顯示不出來了。
其實(shí)之所以前面修改了$this->Fields['body']的值在最終顯示中不能體現(xiàn),是因?yàn)槟0逯袥]有調(diào)用$this->Fields['body']而是調(diào)用的$
this
->SplitFields
,如果沒有文章分頁(yè),那么$
this
->SplitFields中只有一個(gè)元素。能影響到
$
this
->SplitFields
結(jié)果的代碼只能在ParAddTable()
函數(shù)自身中。
版權(quán)聲明: 本站資源均來自互聯(lián)網(wǎng)或會(huì)員發(fā)布,如果侵犯了您的權(quán)益請(qǐng)與我們聯(lián)系,我們將在24小時(shí)內(nèi)刪除!謝謝!
轉(zhuǎn)載請(qǐng)注明: 關(guān)于dedecms文章處理類Archives中的body字段