我们正在使用 Orchard CMS 构建一个网站,其中添加了广告系列。这些添加通过标签(不是果园标签部分)链接到页面。
然后我们构建了一个自定义过滤器,在获取广告系列添加并在小部件中显示它们时考虑这些标签。
在某些页面上有标签,但没有与这些标签匹配的广告系列。此时我们想隐藏小部件。
一种解决方案是在每次添加新活动时编辑小部件层。但我想要一个比这更可靠的解决方案。
摘要:
当查询返回空结果时,我们希望隐藏整个投影小部件。
//玛德琳
我们正在使用 Orchard CMS 构建一个网站,其中添加了广告系列。这些添加通过标签(不是果园标签部分)链接到页面。
然后我们构建了一个自定义过滤器,在获取广告系列添加并在小部件中显示它们时考虑这些标签。
在某些页面上有标签,但没有与这些标签匹配的广告系列。此时我们想隐藏小部件。
一种解决方案是在每次添加新活动时编辑小部件层。但我想要一个比这更可靠的解决方案。
摘要:
当查询返回空结果时,我们希望隐藏整个投影小部件。
//玛德琳
小部件中的大部分标记由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 的文件并粘贴此内容。如果您想了解它是如何完成的,您可以查看之前的内容。
或者