Silverstripe ::自定义模板

时间:2015-05-08 00:52:45

标签: templates silverstripe

我正在重新考虑我的网站。我有很多页面类型(即pagetype.php),每种页面类型都有自己的模板.ss文件。一切正常。仔细观察它们,大多数模板具有相同的布局(即2列或3列)。所以我决定对模板进行推广,这样我就可以减少混乱,也可以保持维持。

Silverstripe默认查找.ss,有没有办法让我可以使用pagetype1.php,pagetype2.php,pagetype3.php,全部使用twocolumn.ss模板

[R

2 个答案:

答案 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 %>

这样您就可以在模板或主题中轻松定义布局。