0

ねえ...どうすれば $Layout 変数をオーバーライドできますか。ユーザーがログインしている場合、コンテンツ Y ではなくコンテンツ X が表示されるように、いくつかのロジックを追加したいと思います。Pag​​e.php 内でレイアウト関数を定義しようとしましたが、機能しません。どうも。

4

1 に答える 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 に答える