2011-06-02 113 views
1

每當我開始一個新的項目時,我發現自己正在改造和重新思考我自己製作的模板庫。我使用dom操作的一些影響,但不想做太多的功能,以便它仍然快速加載。CodeIgniter「模板」系統

這是我目前的模板系統的樣子:

這是一個佈局文件:

<body> 
<div id="content"> 
    <block:content>This is a default text</block:content> 
</div> 
<div id="sidebar"> 
    <widget:advertisement type="wide" /> 
    <block:sidebar this_param="is_passed_on" /> 
</div> 
</body> 

正如你可以看到我做了2樣的「額外」的標籤將被當最終取代發佈模板。我加載此佈局是這樣的:

$this->template->load("layout"); 

我然後可以操縱塊標記是這樣的:

$this->template->content = "I'm overwriting the default text"; 
$this->template->content->prepend("I forgot something"); 

$this->template->sidebar->view("viewfile_1", array(/*data*/)); 
$this->template->sidebar->view("viewfile_2", array(/*data*/)); 

我可以手動設置文字,我可以多個視圖加載到1塊,我可以使用一個像前面加上一些類似DOM的操縱功能,追加,...

我甚至可以與像更佈局選項擴展模板:

$this->template->content->extend("2columns"); 

這種佈局文件可能看起來像:

<div><block:left/></div> 
<div><block:right/></div> 

這樣,而不是內容分塊我現在有一個額外的左,右塊把內容

我還創建了一個小部件標記,加載特定的窗口小部件類(在這種情況下是/ widgets/advertisement)。在標籤中添加的可選參數與直接傳遞的數據數組一起傳遞到視圖文件和/或小部件顯示函數。

總之,這就是我的系統現在的工作原理。我還沒有真正發現這樣的其他系統可以從中獲得靈感。你們能否給我任何建議,以便我可以把一個體面的系統放在一起,我可以繼續使用?

+0

我不確定這是不是你正在尋找,但我的系統是一個更復雜的版本:http://www.reanmachine.com/2011/04/21/codeigniter-theming -a-common-problem/ – Aren 2011-06-02 17:04:38

+0

@Aren,我不明白你的博客是如何顯示更復雜的,因爲你只使用內置的CI視圖功能? – Jens 2011-06-02 17:24:49

+0

對不起,我想在我看來,我沒有像我那樣簡化博客文章的例子。我的實際實現要複雜得多,並且使用'load-> view'的更多佔位符風格的方法來提高速度。 – Aren 2011-06-02 18:11:53

回答

0

我的做法是:

  • 在佈局/文件夾(想回家,歸檔,單篇文章,單頁WordPress的佈局)
  • 創建界面的共同位爲每個網頁類型主要佈局一個公共/文件夾(想想頁眉,頁腳,側邊欄,widget_XX,widget_YY)
  • 使用Phil Sturgeon's Template Library(或Spark!)來處理視圖。
  • 在每個控制器我加載需要渲染$這個 - >數據的所有數據和我傳遞對象視圖

希望這有助於!祝你好運。