iT邦幫忙

0

關於模板的提出?

  • 分享至 

  • xImage

假設我有一個頁面是這樣

<?
require_once __DIR__ . '/header.php';
?>

<div class="admin-container">
  <div class="left-side-content">
    <div class="left-side-content-container relative">
      (這放menu) require 'xxx.php';
    </div>
  </div>
  <div class="right-side-content">
    <div class="right-side-content-container relative">
      (這放內容) require 'xxx.php';
    </div>
  </div>
</div>

<?
require_once __DIR__ . '/footer.php';
?>

假如我的 menu 跟 內容都會丟一個 php 進去(當然會根據 router 不同而不同)
我能怎麼把這個模板提出,我就只要改 menu 跟 內容的 php 檔案名稱就好?
因為如果是有二十頁,就會有二十頁這一狗票的東西~但會變得只有 menu 跟 內容
謝謝說明!

不明
【**此則訊息已被站方移除**】
火爆浪子 iT邦研究生 1 級 ‧ 2019-06-18 12:25:57 檢舉
Smarty 可以直接拿來用嗎?即便網站本體不是框架?
fillano iT邦超人 1 級 ‧ 2019-06-18 13:48:06 檢舉
可以,他跟框架無關。
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

1
fillano
iT邦超人 1 級 ‧ 2019-06-19 09:29:22
最佳解答

https://www.smarty.net/inheritance

如果你要用Smarty的話,使用他的繼承功能,就可以做出你要的效果。共同的內容就放在他例子中的layout.tpl,在其中定義好變動的部份為block,然後每頁的template只要繼承layout.tpl,然後專注於block的內容就可以。

簡單的routing機制可以用front controller模式來實做,我google了一下,看到iT邦就有文章:https://ithelp.ithome.com.tw/articles/10193950 。這樣你就可以根據route來決定調用的template,會比較方便。

都做完以後你會發現,MVC裡面,V跟C的關係比較緊密,M通常可以抽換...一些舊的程式,需要的話可以先實做V,然後引入C,最後加入M,這樣一步一步改成MVC。

0

搖頭中

聽到你說20個頁面要改,我就頭昏了。

從你提出來的範例來看,你的「require 'xxx.php';」
是依照不同的router來去取不同的頁面。

但試問一下,這20格頁面的格式是否是一樣架構的東西。
正統來說,你因該是建立一個模版之後。帶入參數來去生成你的東西。
這樣你只要一個頁面就好。

剩下來就是從程式中去處理變數輸出就行了。
用20多個頁面是一件很笨的事。

看更多先前的回應...收起先前的回應...
froce iT邦大師 1 級 ‧ 2019-06-18 09:53:30 檢舉

PHP沒模版語言這種東西嗎?
在現代的MVC框架中,要做這種事非常容易。把模版用函式render出來就好了。
純PHP得自己實現的話就比較麻煩了。

dragonH iT邦超人 5 級 ‧ 2019-06-18 10:10:33 檢舉

我記得他之前的發問

好像有說他正在用Laravel寫 MVC 啥的...

帶值到模版中應該是MVC基本中的基本吧/images/emoticon/emoticon10.gif

其實,看到 require_once 的用法在view上面我就已經冷一半了。
雖然我不知道Laravel是否有view呼叫的做法。

火爆浪子 iT邦研究生 1 級 ‧ 2019-06-18 12:25:12 檢舉

有呢,我有看過一些模板引擎,只是還在摸索中,我想明白這原理,像這個是我昨天查到的:https://www.toolmao.com/php-simple-template

fillano iT邦超人 1 級 ‧ 2019-06-18 13:54:21 檢舉

Smarty是會經過編譯的(他會編譯成PHP,放在設定好的cache目錄),他的模板語法也就是一個簡單的程式語言了。你看到的例子是直接把模板要用的變數準備好,然後include模板,模板本身的實際上還是個PHP。

想要知道Smarty的原理,不如直接去看Smarty的原始碼,不過他複雜得多。

fillano iT邦超人 1 級 ‧ 2019-06-18 14:01:14 檢舉

另外,學習使用模板引擎的時候,首先要注意的重點並不是他的原理,而是頁面的內容以及如何重複利用共同的部份等等,把要呈現的東西組織起來。

不明
【**此則訊息已被站方移除**】

我要發表回答

立即登入回答