我正在重新考虑我的网站。我有很多页面类型(即pagetype.php),每种页面类型都有自己的模板.ss文件。一切正常。仔细观察它们,大多数模板具有相同的布局(即2列或3列)。所以我决定对模板进行推广,这样我就可以减少混乱,也可以保持维持。
Silverstripe默认查找.ss,有没有办法让我可以使用pagetype1.php,pagetype2.php,pagetype3.php,全部使用twocolumn.ss模板
[R
答案 0 :(得分: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
。否则,将使用页面的默认模板。
答案 1 :(得分:0)
您可以定义(如3dgoo所述)$this->renderWith("TwoColumn");
,或者 - 如果您不想在代码中解决此问题但仅在模板中解决此问题 - 您可以将twocolumns布局拆分为自己的文件< em>包含 dir,让我们说 /templates/Includes/TwoColumn.ss 。
然后,例如在 /templates/Layout/PageType1.ss 中
<% include TwoColumn %>
这样您就可以在模板或主题中轻松定义布局。