首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在OrchardCMS中获取HTML的标题

在OrchardCMS中获取HTML的标题
EN

Stack Overflow用户
提问于 2018-08-20 00:50:40
回答 2查看 174关注 0票数 0

如何在Orchard CMS中获得HTML的标题(在本例中为“默认”TripelFirst)?新手的问题,但我搞不懂。

这是代码,我只是不知道如何将标题放到“面板标题”div中。

代码语言:javascript
复制
@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>
            }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-09-06 04:03:54

使用形状跟踪工具,帮助我了解模型的结构。我并不是说这是果园团队想要的结果,但这就是我最终解决问题的方法。

代码语言:javascript
复制
@if (Model.SideItems != null)
{
    <div class="col-md-12">&nbsp;</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>
        }
    }
}
票数 0
EN

Stack Overflow用户

发布于 2018-09-02 04:41:16

首先,您似乎混淆了区域和小部件。TripelFirst是一个区域,而不是一个小部件(更深入地解释区域是什么,请参见"那么什么才是真正的区域呢?“)。区域应该被视为占位符,一个将添加小部件的容器。Orchard有一个丰富的组合模型,其中许多解耦的服务参与页面的呈现。区域本身对它内部的内容几乎一无所知,当时间到来时,它只会将呈现委托给它的内容(例如小部件)。因此,区域将无法提供获取其包含的小部件标题的最简单方法。到目前为止,在Orchard中自定义呈现的最简单方法是从正确的位置进行呈现:D在本例中,您可能希望重写小部件的特定模板,或者重写其包装器的模板( Orchard中的所有形状都可以有包装器,这些包装器是围绕形状本身呈现的模板)。

起初,这看起来有点吓人,但是Orchard提供了一个非常棒的工具,可以轻松地发现页面的形状结构。启用开发机器上的designer模块中的“形状跟踪”功能(当然,不要在生产中激活它),您将在页面底部获得一个类似Firebug的调试面板,您可以使用它来探索形状/模板树、每个形状/模板的模型等等。

在Orchard中理解呈现所必需的另一个概念是放置文件,它主要描述代表内容项的顺序形状应该被呈现。

最后,要控制进入TripelFirst区域的小部件标题的呈现,请使用形状跟踪在主题中找到需要覆盖的模板,然后修改该模板中的呈现,使其完全符合您的需要。

下面是一个代码示例,您可以将其放入内容部件模板覆盖(如Parts.Title.cshtml)中,首先查找当前部件的内容项,然后进入Title部件,并将其显示为链接。

代码语言:javascript
复制
@{
    Orchard.ContentManagement.ContentItem contentItem =
        Model.ContentPart.ContentItem;
    string title = Model.Title.ToString();
}

<h2>@Html.ItemDisplayLink(title, contentItem)</h2>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51922951

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档