2015-05-08 65 views
1

我正在重新分解我的網站。我有很多頁面類型(即pagetype.php),每個頁面類型都有自己的模板.ss文件。所有工作正常。仔細觀察它們,大部分模板具有相同的佈局(即2列或3列)。所以我決定推廣這個模板,以便我可以減少混亂,也可以維持。Silverstripe ::自定義模板

Silverstripe默認查找.SS,有沒有辦法可以讓pagetype1.php,pagetype2.php,pagetype3.php,所有使用twocolumn.ss模板

[R

+3

您可以在頁面控制器的'index()'函數中使用'$ this-> renderWith(「TwoColumn」);''。如果其他人先不瞭解,我會在稍後詳細地回答一些問題。希望這可以幫助你現在正確的方向。 – 3dgoo

+0

謝謝,已經做到了這一點:-) – RDRAO

回答

0

要麼你定義(如3dgoo所述)$this->renderWith("TwoColumn");,或者 - 如果您不想在代碼中解決此問題,但僅在模板中解決此問題 - 您可以將兩列布局分割爲一個自己的文件包括 dir,比方說/templates/Includes/TwoColumn.ss

然後例如在/templates/Layout/PageType1.ss

<% include TwoColumn %> 

這樣你就可以在你的模板或主題很容易定義佈局。

1

我們可以在我們的頁面控制器的index()函數中使用renderWith()來控制頁面類型應該使用的模板。

下面是一些示例代碼:

class PageType_Controller extends Page_Controller { 

    function index() { 
     return $this->renderWith(
      array('TwoColumn', 'Page') 
     ); 
    } 
} 

在這個例子中,我們告訴控制器array('TwoColumn', 'Page')來渲染頁面。什麼似乎與此發生是Page.ss用於主要模板。然後TwoColumn.ss用於佈局模板。

有一點需要注意的是,如果我們在控制器上有任何其他可能用於前端的操作,我們還需要在這些操作中的每一箇中調用renderWith。否則,將使用該頁面的默認模板。