2

実際のゾーン テンプレートのレンダリングをオーバーライドしようとしています。

次のようなものをレンダリングします。

<div class="zone zone-hero" shape-id="13">      

    <div class="inner" shape-id="14">
        content is stuffed in here
    </div>

</div>

Zone.cshtml をテンプレートのルートに配置すると、そのレンダリングをオーバーライドできることがわかりました。私が理解できないのは、ウィジェットとコンテンツが存在する場合にそれをレンダリングする方法です。@Display(Model.Content) を使用してみましたが、うまくいきませんでした。

4

3 に答える 3

4

このテンプレートは、シェイプの Attribute および Classes プロパティを尊重し、Orchard の規則に従って Id フィールドを設定します。したがって、開発者にとって、このコードを含むテンプレートはまったく期待どおりに動作します。

@{
    Model.Id = string.Concat("zone-", Model.Hint.ToLowerInvariant());
    var tag = Tag(Model, "section");
}
@tag.StartElement
@DisplayChildren(Model)
@tag.EndElement

たとえば、コンテンツ ゾーンをオーバーライドする場合はzone-content.cshtml、テーマ プロジェクトの Views フォルダーに名前の付いたページを作成し、上記のコードをそこにコピーします。

于 2014-01-22T14:42:28.647 に答える
1

バートランドが提案したように行うことができます (これにより、ゾーン内の各要素のレンダリングをより詳細に制御できます)、または@DisplayChildren(Model).

于 2013-02-27T05:24:34.903 に答える
0

あなたがする必要があるのは、それ自体の下にある形状を列挙し、それらのそれぞれで Display を呼び出すことです。IEnumerable にキャストするとうまくいくはずです。

于 2013-02-26T07:28:00.533 に答える