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