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

4

作为跟进,自从我提出这个问题以来,Orchard 的更新包括使用placement.info 文件将某些部分重新路由到其他区域的能力,实际上让我完成了我正在寻找的事情。

<Placement>
  <Match ContentType="Page">
    <Place Parts_Title="/TitleZone"/>
  </Match>
</Placement>
于 2013-12-13T17:44:47.933 回答
2

在 Layout 中,Model 是 Layout 对象。它与将要呈现到内容区域的任何内容无关,但它确实具有应该由该内容设置的 Title 属性。不过,这并不完全是您所要求的:它最终将成为 HTML 标题。

如果您想获得呈现到顶级内容区域的项目的标题,那么,布局确实不是寻找它的好地方。我需要更多地了解您到底想要实现什么,但这似乎倒退了。事实上,您甚至不能假设只有一个这样的内容项,或者只有一个。

那么你到底想要做什么呢?

于 2012-06-22T21:17:14.400 回答
0

这对你有用吗?

@Html.Title()

如果您正在寻找页面标题,那应该可以工作。但是,如果您希望直接访问 TitlePart ...

@Model.Title

这是有效的,因为如果您查看 Parts.Title 模板,则有一行代码可以执行此操作...

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