我正在重新分解我的網站。我有很多頁面類型(即pagetype.php),每個頁面類型都有自己的模板.ss文件。所有工作正常。仔細觀察它們,大部分模板具有相同的佈局(即2列或3列)。所以我決定推廣這個模板,以便我可以減少混亂,也可以維持。Silverstripe ::自定義模板
Silverstripe默認查找.SS,有沒有辦法可以讓pagetype1.php,pagetype2.php,pagetype3.php,所有使用twocolumn.ss模板
[R
我正在重新分解我的網站。我有很多頁面類型(即pagetype.php),每個頁面類型都有自己的模板.ss文件。所有工作正常。仔細觀察它們,大部分模板具有相同的佈局(即2列或3列)。所以我決定推廣這個模板,以便我可以減少混亂,也可以維持。Silverstripe ::自定義模板
Silverstripe默認查找.SS,有沒有辦法可以讓pagetype1.php,pagetype2.php,pagetype3.php,所有使用twocolumn.ss模板
[R
要麼你定義(如3dgoo所述)$this->renderWith("TwoColumn");
,或者 - 如果您不想在代碼中解決此問題,但僅在模板中解決此問題 - 您可以將兩列布局分割爲一個自己的文件包括 dir,比方說/templates/Includes/TwoColumn.ss。
然後例如在/templates/Layout/PageType1.ss做
<% include TwoColumn %>
這樣你就可以在你的模板或主題很容易定義佈局。
我們可以在我們的頁面控制器的index()
函數中使用renderWith()
來控制頁面類型應該使用的模板。
下面是一些示例代碼:
class PageType_Controller extends Page_Controller {
function index() {
return $this->renderWith(
array('TwoColumn', 'Page')
);
}
}
在這個例子中,我們告訴控制器array('TwoColumn', 'Page')
來渲染頁面。什麼似乎與此發生是Page.ss
用於主要模板。然後TwoColumn.ss
用於佈局模板。
有一點需要注意的是,如果我們在控制器上有任何其他可能用於前端的操作,我們還需要在這些操作中的每一箇中調用renderWith
。否則,將使用該頁面的默認模板。
您可以在頁面控制器的'index()'函數中使用'$ this-> renderWith(「TwoColumn」);''。如果其他人先不瞭解,我會在稍後詳細地回答一些問題。希望這可以幫助你現在正確的方向。 – 3dgoo
謝謝,已經做到了這一點:-) – RDRAO