May 30,2005

Global Variable for Smarty

這篇要談自己在玩pLog時遇到的問題,可以說是一篇技術性文章。Markwu把他的閒聊文章和技術性文章分開,我想這是個不錯的主意,這裡對我來說是閒聊性質的(當然我還是會有所保留,畢竟我並不是習慣寫日記來暴露自己的人),所以我應該要把這篇發在別的地方?除了本家和這裡之外,我是有第三個blog啦(俗話說「狡兔三窟」),可是那裡計畫是用來放自己未來讀研究所的研究心得用的,放那邊似乎也不太適當,開第四個blog又有點太誇張了,所以還是先放這裡吧。

之前在pLog中文文件計畫貼了「在單篇彙整頁面中顯示同類別上下篇連結」的方法,但其實我當初寫code的時候還想到一個問題,就是這兩段code實在太長了(尤其是第一段),要是可以放在一個獨立的.template檔裡讓使用者直接include進去,應該更方便吧。

於是我嘗試第一個方向:將第一段code放在prenex.template中,在postandcomments.template裡做include的動作之後,再貼第二段code。但是,卻發現完全無法正常運作!經檢查後,發現似乎是因為第一段code所宣告的變數,都只能停留在prenex.template中,沒辦法傳到外面來,所以外面的code使用這些變數時會發生錯誤。

然後我又嘗試第二個方向:將兩段code都放在prenex.template中。單純這樣做確實可以正常運作,但是如果第二段code需要加入兩次的話,第一段code跑兩次又好像不符合經濟效益,所以我試圖在prenex.template中多加一個變數檢查--只有該變數不存在的時候才會跑第一段,而跑完第一段之後就把該變數建立起來。不過實際使用後發現還是沒有用--因為多加的這個變數,一樣活不過prenex.template第一次include完之後,所以第二次include prenex.template的時候該變數又是不存在,等於第一段code還是又重跑一次。

看來問題是出在,子模版裡的變數無法在父模版裡繼續存活,所以這兩段code一定要存在同一個template中才行。這個問題真的無解嗎?我剛剛google了一下,在這裡查到可以在Configuration file裡面加Global variables。不知道這個Global variables是不是可以在程式執行中去更動它,而依然可以Globally的access到被修改後的內容?(我是怕它只是「Global Constant」啦……)改天有空的時候再來試試看好了。

Posted by Asadream at 樂多Roodo! │23:58 │回應(1)引用(0)pLog
樂多分類:日記/一般 工具:編輯本文
Ads by Roodo! 

引用URL

http://cgi.blog.roodo.com/trackback/158051
回應文章
啊,剛剛又想到一招可能可以用:我就把第二段code需要從第一段code取用的那四個變數、以及用來當作「第一段code是否執行過」的變數,合計五個變數先在postandcomment.template宣告,然後大概就可以多次include prenex.template而不會重複執行到第一段code了。雖然這樣做的話使用者還是要多加好幾行...orz
Posted by 曉夢 at May 31,2005 00:07