2011-05-20 82 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 %> 
你可以通過重寫,像這樣的指數()函數(它添加到您的控制器)做到這一點