Orchard - 从主题布局中获取内容的标题

时间:2012-06-22 01:32:12

标签: asp.net asp.net-mvc orchardcms

这会让我以这个速度疯狂。从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>

Snapshot of the resulting layout

3 个答案:

答案 0 :(得分:4)

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

<Placement>
  <Match ContentType="Page">
    <Place Parts_Title="/TitleZone"/>
  </Match>
</Placement>

答案 1 :(得分:2)

从布局,模型是布局对象。无论将什么内容呈现到Content区域,它都无关紧要,但它确实具有应该由该内容设置的Title属性。但这并不是你要求的:它最终会成为HTML标题。

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

那你究竟想做什么呢?

答案 2 :(得分:0)

这对你有用吗?

@Html.Title()

如果你正在寻找页面标题,那应该有用。但是,如果您希望直接访问TitlePart ...

@Model.Title

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

@{
   Layout.Title = Model.Title;
}