2011-05-20 100 views
0

嘿...我怎么能覆盖$布局变量。我想添加一些逻辑,所以如果用户登录它显示内容X,如果不是内容Y.我试着在Page.php中定义布局函数,但它不起作用。谢谢。

回答

2

我不认为你真的想覆盖$布局函数...这是用来包含一个适当的模板页面type.e.g.如果您的页面类型为NewsPage类名,则SilverStripe会在模板/ Includes目录中检查NewsPage.ss文件。如果不存在,那么它将使用该目录中的Page.ss文件以及templates目录(具有$ Layout变量)根目录中的Page.ss。请参阅SilverStripe Templates

如果你想显示不同的内容,那么一种方法是覆盖内容变量。

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 %> 
你可以通过重写,像这样的指数()函数(它添加到您的控制器)做到这一点