我们正在与Orchard CMS建立一个网站,我们在其中添加了广告系列。 这些添加通过标记(而不是果园标记部分)链接到页面。
然后我们构建了一个自定义过滤器,在获取广告系列时会考虑这些标记,并在窗口小部件中显示它们。
在某些网页上有标签,但没有符合这些标签的广告系列。我们想在此时隐藏小部件。
一种解决方案是在每次添加新广告系列时编辑窗口小部件图层。但我希望有一个比这更稳固的解决方案。
摘要:
我们想在查询返回空结果时隐藏整个投影小部件。
// Madelene
答案 0 :(得分:1)
小部件中的大多数标记都是由 Widget.Wrapper.cshtml 模板呈现的。您可以做的是根据窗口小部件本身的内容过滤此包装器将呈现的内容。这样,如果窗口小部件不呈现任何内容,您可以决定隐藏标题和其他区域。这是代码:
@using Orchard.ContentManagement;
@using Orchard.Widgets.Models;
@{
var widgetPart = ((IContent)Model.ContentItem).As<WidgetPart>();
var tag = Tag(Model, "article");
var childContent = Display(Model.Child);
}
@if (!String.IsNullOrEmpty(Convert.ToString(childContent))) {
@tag.StartElement
if ((widgetPart.RenderTitle && HasText(widgetPart.Title)) || Model.Header != null) {
<header>
@if ((widgetPart.RenderTitle && HasText(widgetPart.Title))) {
<h1>@widgetPart.Title</h1>
}
@Display(Model.Header)
</header>
}
@childContent
if (Model.Footer != null) {
<footer>
@Display(Model.Footer)
</footer>
}
@tag.EndElement
}
只需在主题中创建一个名为Widget.Wrapper.cshtml的文件并粘贴此内容即可。如果您想了解它是如何完成的,可以查看之前的内容。
答案 1 :(得分:0)
或