如何在Orchard CMS中获得HTML的标题(在本例中为“默认”TripelFirst)?新手的问题,但我搞不懂。
这是代码,我只是不知道如何将标题放到“面板标题”div中。
@if (Model.TripelFirst != null || Model.TripelSecond != null || Model.TripelThird != null) {
<div class="row">
@if (Model.TripelFirst != null) {
<div class="col-md-4 panel panel-success" runat="server" id="TripelFirst">
<div class="panel-heading">@Model.TripelFirst.Title()</div>
<div class="panel-body">@Model.TripelFirst.Body</div>
</div>
}
@if (Model.TripelSecond != null) {
<div class="col-md-4 panel panel-success" runat="server" id="TripelSecond">@Display(Model.TripelSecond)</div>
}
@if (Model.TripelThird != null) {
<div class="col-md-4 panel panel-success" runat="server" id="TripelThird">@Display(Model.TripelThird)</div>
}
</div>
}发布于 2018-09-06 04:03:54
使用形状跟踪工具,帮助我了解模型的结构。我并不是说这是果园团队想要的结果,但这就是我最终解决问题的方法。
@if (Model.SideItems != null)
{
<div class="col-md-12"> </div>
var sideWidgetItems = ((IEnumerable<dynamic>)Model.SideItems.Items).Where(x => x.ContentItem.ContentType == "HtmlWidget");
if (sideWidgetItems.Any())
{
foreach (var item in sideWidgetItems)
{
<div class="col-md-12">
<div class="panel panel-success">
<div class="panel-heading">@Html.Raw(item.ContentItem.Content.Parts[3].Title)
</div>
<div class="panel-body">@Html.Raw(item.ContentItem.Content.Parts[1].Text)
</div>
</div>
</div>
}
}
}发布于 2018-09-02 04:41:16
首先,您似乎混淆了区域和小部件。TripelFirst是一个区域,而不是一个小部件(更深入地解释区域是什么,请参见"那么什么才是真正的区域呢?“)。区域应该被视为占位符,一个将添加小部件的容器。Orchard有一个丰富的组合模型,其中许多解耦的服务参与页面的呈现。区域本身对它内部的内容几乎一无所知,当时间到来时,它只会将呈现委托给它的内容(例如小部件)。因此,区域将无法提供获取其包含的小部件标题的最简单方法。到目前为止,在Orchard中自定义呈现的最简单方法是从正确的位置进行呈现:D在本例中,您可能希望重写小部件的特定模板,或者重写其包装器的模板( Orchard中的所有形状都可以有包装器,这些包装器是围绕形状本身呈现的模板)。
起初,这看起来有点吓人,但是Orchard提供了一个非常棒的工具,可以轻松地发现页面的形状结构。启用开发机器上的designer模块中的“形状跟踪”功能(当然,不要在生产中激活它),您将在页面底部获得一个类似Firebug的调试面板,您可以使用它来探索形状/模板树、每个形状/模板的模型等等。
在Orchard中理解呈现所必需的另一个概念是放置文件,它主要描述代表内容项的顺序形状应该被呈现。
最后,要控制进入TripelFirst区域的小部件标题的呈现,请使用形状跟踪在主题中找到需要覆盖的模板,然后修改该模板中的呈现,使其完全符合您的需要。
下面是一个代码示例,您可以将其放入内容部件模板覆盖(如Parts.Title.cshtml)中,首先查找当前部件的内容项,然后进入Title部件,并将其显示为链接。
@{
Orchard.ContentManagement.ContentItem contentItem =
Model.ContentPart.ContentItem;
string title = Model.Title.ToString();
}
<h2>@Html.ItemDisplayLink(title, contentItem)</h2>https://stackoverflow.com/questions/51922951
复制相似问题