Re: [請益] 關於Smarty的樣板用法

看板PHP作者 (sqaure)時間16年前 (2009/03/01 23:55), 編輯推噓2(209)
留言11則, 2人參與, 最新討論串6/6 (看更多)
感謝b大 精闢的解答 我想這也大概是我想採用的模式 此外我還想問問 各位有使用類似做法的人 如果我的head.tpl 有自己的js css等等 footer.tpl 與tool_1.tpl 也都有獨立的js 請問 tool_1.tpl 是否該寫成 : [寫法一] <html> <head> <script type="text/javascript" src="tool_1.js"></script> </hread> <body> <p> tool body</p> </body> </html> 還是寫成 : [寫法二] <script type="text/javascript" src="tool_1.js"></script> <p> tool body</p> 或者 乾脆都不加js: [寫法三] <p> tool body</p> 而js的部分 就寫在主頁的樣板中? 希望大家能給點解答了,謝謝 ※ 引述《bobju (寶貝豬)》之銘言: : 方法一跟方法二應該都可以用, 甚至可以混用. 至於要採用哪種方式則 : 應該從系統架構規劃的角度來看. 底下提供一個設計樣式僅供參考: : 資料層 控制層 表達層 : +---[response]----+ : | v assign : DB_Obj<---[SQL]-----list.php--[display/smarty]-->main.tpl : | : +---[response]----+ +head.tpl : | v +footer.tpl : DB_Obj1<---[SQL]----tool_1.php---[response]----->+tool_1.tpl : ^ | : +------[request/ajax]--------+ : ※ 引述《sqaure (sqaure)》之銘言: : : 我想做的是 : : : [list.php] : : $smarty = new $smarty(); : : //....相關設定後 : : $smarty->assign("content" , "list.tpl"); : : //query articles.... : : $smarty->assign("article" , articles); : : $smarty->display("main.tpl"); : : [main.tpl] : : {include file="head.tpl"} : : -------┬------------------------- : : tool | : : div1 | {include file = $content} : : ------┤ : : tool | : : div2 | : : : | : : -------┴-------------------------- : : {include file="footer.tpl"} : : main.tpl 是一個共用的樣板 : : 主要架構就是 頁面的header跟footer都是固定的靜態樣板(方便未來可替換用) : : 直接利用smarty { include file="header.tpl"} { include file="footer.tpl"} : : 就可以解決, : : 而畫面中主要的內容區 主要是利用assign $content 來選擇想顯示的樣板(例如 : : $content= list.tpl (文章列表) ) : : 同時把$content的樣板中的資料 assign 進去 : : 最後在整個 $smarty->display("main.tpl") 就會顯示出所有畫面 : : 這是的初步構想 也的確是work的 : : 但比較大的問題就是 左方的功能列 是類似一個個的小視窗 : : 每個小視窗都希望 未來是可以獨立運作的 : : 例如 : tool_1.php <---> tool_1.tpl : : 請問這樣該怎麼做呢? : : 做法一 : 如同$content : : {include file="tool_1.tpl"} : : 同時在list.php 當中 assign tool_1.tpl中所需要的資料 : : 缺點 : 如果tool_1.tpl 又需要 給其他頁面共用 : : assign 給 tool_1.tpl的資料 又要再重複寫一次 : : 作法二 : 利用ajax 的方式 送出request 要求tool_1.php : : 將responseText貼回 小視窗的div中 : : 缺點 : 寫法較為困難,後續維護需要更高技巧 : : 其tool_1的相關js 與css,又要另外請求利用javascript 加入link到 : : list.tpl的DOM中 : : 目前我是採取 做法二 ,但不知道是否各位有更好的做法? : : 因為目前所開發的網站中 會有很多如此共用的頁面 : : 所以才想要避免程式碼重複寫,以便維護 : : 希望能聽聽大家的意見。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.116.162.209

03/03 00:04, , 1F
我google一些文章, 共同點是建議把javascript 獨立成
03/03 00:04, 1F

03/03 00:05, , 2F
一個檔案, 再由主頁用include的方式匯進來. 這樣比較
03/03 00:05, 2F

03/03 00:07, , 3F
好維護. 而且在<head>區塊裏include javascript file
03/03 00:07, 3F

03/03 00:08, , 4F
也是比較普遍的方式. 當然這並非絕對. 也有些特殊考
03/03 00:08, 4F

03/03 00:08, , 5F
量會建議放在head區塊以外的地方, 甚至是在body區塊
03/03 00:08, 5F

03/03 00:09, , 6F
的結束標記</body>之最近位置, 理由是這樣可以縮短
03/03 00:09, 6F

03/03 00:10, , 7F
user感受網頁內容視覺回應時間.
03/03 00:10, 7F

03/03 00:11, , 8F
我個人習慣放在head區塊內, 因為這樣一旦需要主頁載
03/03 00:11, 8F

03/03 00:11, , 9F
入哪些javascript file, 只要查看head區塊就知道了,
03/03 00:11, 9F

03/03 00:12, , 10F
無需翻遍整個頁面.(我用ultraedit寫程式, 沒在用ide)
03/03 00:12, 10F

03/05 23:06, , 11F
找body結束的地方也很快阿..ctrl+end
03/05 23:06, 11F
文章代碼(AID): #19gg_eZ_ (PHP)
文章代碼(AID): #19gg_eZ_ (PHP)