嘿......我怎么能覆盖$ Layout变量。我想添加一些逻辑,所以如果用户登录它显示内容X,如果不是内容Y.我尝试在Page.php中定义布局功能,但它不起作用。 THX。
答案 0 :(得分:2)
我认为你真的不想覆盖$ Layout函数...这用于包含页面类型的适当模板。如果你有一个类名为NewsPage的页面类型,那么SilverStripe将在templates / Includes目录中检查NewsPage.ss文件。如果那不存在那么它将使用该目录中的Page.ss文件以及templates目录的根目录中的Page.ss(具有$ Layout变量)。请参阅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 %>