8

このままでは気が狂いそうです。Orchard のテーマの Layout.cshtml ファイル内から、本体のコンテンツのタイトルを特定するにはどうすればよいですか?

Shape Tracer を使用してみましたが、効果がないようです。これらのどれも私にテキストをまったく与えません。

@Html.Title()
@Model.Title                
@Model.Content.Parts_Common_Body.ContentItem.TitlePart
@Model.ContentItem.Parts_Common_Body.ContentItem.TitlePart

更新: これは、テーマをそのまま維持するために最終結果がどのように見える必要があるかを示す HTML と、テーマを開始する前のテーマを示す画像です。この HTML は、私が関心を持っている部分のほんの一部です。画像では、検索は ContentHeader ゾーンにあるものです。

<div id="wrapper-header-inner">
        <div id="header-inner">
        @Zone(Model.ContentHeader)
        <h1 class="pagetitle">
            Title Here
        </h1>
        </div><!-- #header-inner -->
</div><!-- #wrapper-header-inner -->
}


<div id="wrapper-content">
    <div id="content">
        @if(Model.Content != null) {
        <div class="main" class="@mainContentClass">
            @if(Model.Content != null && Model.LeftAside == null && Model.RightAside == null) {
                <div id="maincontentFull" class="positionleft">
                    @Zone(Model.Content)
                </div>
            }
            @* Other layout possabilities if left and/or right asides are present *@
        </div>
        }
    </div>
</div>

結果のレイアウトのスナップショット

4

3 に答える 3

2

Layout から、Model は Layout オブジェクトです。コンテンツ ゾーンにレンダリングされるコンテンツとは何の関係もありませんが、そのコンテンツによって設定される必要がある Title プロパティがあります。ただし、それはまさにあなたが求めているものではありません。最終的に HTML タイトルになるものです。

最上位のコンテンツ ゾーンにレンダリングされるアイテムのタイトルを取得したい場合、レイアウトは実際にはそれを探すのに適した場所ではありません。あなたが達成しようとしていることを正確に知る必要がありますが、これは逆のようです。実際、そのようなコンテンツ アイテムが 1 つある、または 1 つだけであるとは想定できません。

それで、あなたがやろうとしていることは正確には何ですか?

于 2012-06-22T21:17:14.400 に答える
0

これはうまくいきますか?

@Html.Title()

ページのタイトルを探している場合は、これでうまくいくはずです。ただし、TitlePart に直接アクセスする場合は...

@Model.Title

これが機能するのは、Parts.Title テンプレートを見ると、これを行うコード行があるためです...

@{
   Layout.Title = Model.Title;
}
于 2012-06-22T04:11:45.457 に答える