嘿...我怎样才能覆盖 $Layout 变量。我想添加一些逻辑,所以如果用户登录它会显示内容 X 如果不是内容 Y。我尝试在 Page.php 中定义 Layout 函数,但它不起作用。谢谢。
问问题
1282 次
1 回答
2
我不认为你真的想重写 $Layout 函数......这用于包含页面类型的适当模板。例如,如果你有一个类名为 NewsPage 的页面类型,那么 SilverStripe 会检查模板内部/包括 NewsPage.ss 文件的目录。如果不存在,那么它将使用该目录中的 Page.ss 文件以及模板目录(具有 $Layout 变量)根目录中的 Page.ss 参见SilverStripe Templates。
如果您想显示不同的内容,那么一种方法是覆盖 Content 变量。您可以通过像这样覆盖 index() 函数来做到这一点(将其添加到您的控制器中):
function index($request) {
if( Member::currentUserID() ) {
return array(
'Content' => '<p>My custom content</p>'
);
} else {
return array();
}
}
另一种方法是在模板本身中执行此操作,如下所示:
<% if CurrentMember %>
<p>Logged in</p>
<% else %>
<p>No logged in</p>
<% end_if %>
于 2011-05-22T01:32:22.107 回答