ねえ...どうすれば $Layout 変数をオーバーライドできますか。ユーザーがログインしている場合、コンテンツ Y ではなくコンテンツ X が表示されるように、いくつかのロジックを追加したいと思います。Page.php 内でレイアウト関数を定義しようとしましたが、機能しません。どうも。
1282 次
1 に答える
2
$Layout 関数を本当にオーバーライドしたいとは思いません...これは、ページ タイプに適切なテンプレートを含めるために使用されます。たとえば、クラス名が NewsPage のページ タイプがある場合、SilverStripe はテンプレート内をチェックします。 /NewsPage.ss ファイルのディレクトリを含めます。それが存在しない場合は、テンプレート ディレクトリのルート ($Layout 変数を持つ) の Page.ss とともに、そのディレクトリの Page.ss ファイルを使用します。 SilverStripe テンプレートを参照してください。
別のコンテンツを表示したい場合、1 つの方法は 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 に答える