【发布时间】:2014-11-12 11:23:07
【问题描述】:
我是 SilverStripe 的新手。我需要通过扩展一个新的类站点树来创建一个新页面。我的问题是如何在模板中检索类似于经典 page.php 中使用的 $Layou 的内容。例如,在我的模板文件夹中,我希望为由此创建的新页面组织一个类似“布局”的文件夹。
这是控制器:
class WhitePage extends SiteTree {
private static $db = array(
);
private static $has_one = array(
);
}
class WhitePage_Controller extends ContentController {
private static $allowed_actions = array(
);
public function init() {
parent::init();
}
function index() {
return $this->renderWith("WhitePage");
}
}
我想在模板目录中的“.ss”文件中创建一个文件夹名称“whitepage”,并在模板中使用类似 $whitepage instate of $Layout ...
如何做到这一点?
thk,很多 弗朗切斯科
【问题讨论】:
-
据我所知,您不会轻易覆盖
$Layout。除了尝试以不同的方式组织您的模板文件夹之外,您究竟为什么要这样做呢?我工作过的每个站点,自定义页面模板都像往常一样存储在mysite/templates/Layout文件夹中,任何添加新页面模板的模块都存储在{my-module-name}/templates/Layout中。 -
我的目的是创建一个不会呈现基本页面 page.ss 的新页面,在这种情况下,我需要一个没有 page.ss 内元素的 withe 页面(在主题/mytheme/templates/ Page.ss)
-
你可以把你的 WhitePage.ss 放在主题/mytheme/templates 中,它将被用来代替 Page.ss 更多关于 Silverstripe 模板引擎的信息:doc.silverstripe.org/framework/en/reference/templates
-
这就是我所做的,但我对更复杂且可重复使用的东西感兴趣。因为如果我需要为新的扩展页面重用白页,我会这样做......
-
您可以使用 renderWith 因为它可以处理数组并且将使用第一个有效的数组。见这里:api.silverstripe.org/master/class-ViewableData.html#_renderWith
标签: silverstripe