我需要为TagsPart显示摘要和详细显示类型的不同视图,但它只包含两个视图的一个形状Tags_ShowTags。
protected override DriverResult Display(TagsPart part, string displayType, dynamic shapeHelper) {
return ContentShape("Parts_Tags_ShowTags",
() => shapeHelper.Parts_Tags_ShowTags(Tags: part.CurrentTags.Select(x => new ShowTagViewModel { TagName = x })));
}
有没有办法为形状Tags_ShowTags创建不同的视图?像这样: Tags.ShowTags-MyContentType.Detail.cshtml Tags.ShowTags-MyContentType.Summary.cshtml
答案 0 :(得分:3)
Marco Serralheiro使用Atlernates的提示允许使用不同的视图进行摘要和细节显示类型,而无需创建额外的形状。请参阅以下示例:
<Match ContentType="MyContentType">
<Match DisplayType="Summary">
<Place Parts_Tags_ShowTags="Content:4;Alternate=Parts_Tags_ShowTag_MyContentType_Summary"/>
</Match>
<Match DisplayType="Detail">
<Place Parts_Tags_ShowTags="Content:4;Alternate=Parts_Tags_ShowTag_MyContentType_Detail"/>
</Match>
</Match>
查看姓名:
/Views/Parts.Tags.ShowTag.MyContentType.Summary.cshtm
/Views/Parts.Tags.ShowTag.MyContentType.Detail.cshtml
答案 1 :(得分:1)
是。您是否尝试过“形状跟踪”工具,以查找该形状的可用替代项(http://docs.orchardproject.net/Documentation/Customizing-Orchard-using-Designer-Helper-Tools)?您还可以查看http://docs.orchardproject.net/Documentation/Alternates - 使用Parts_Tags_ShowTags作为示例来解释替代项。
编辑:
我设法增加了可用替代项的数量(可以在placement.info文件中显式指定它们),如下所示:http://kobowi.co.uk/blog/2012/11/content-display-type-alternates-for-content-parts-in-orchard
在我自己的模块中,我放置了这个&#34; PartContentTypeAlternateFactory.cs&#34;:
using Orchard.DisplayManagement.Implementation;
using System;
namespace MyModule.Name {
public class PartContentTypeAlternateFactory : ShapeDisplayEvents {
public override void Displaying(ShapeDisplayingContext context) {
context.ShapeMetadata.OnDisplaying(displayedContext => {
var shapeType = displayedContext.ShapeMetadata.Type;
var contentItem = displayedContext.Shape.ContentItem;
if (contentItem == null) return;
var displayType = displayedContext.ShapeMetadata.DisplayType;
var contentType = contentItem.ContentType;
// add a couple more alternates
displayedContext.ShapeMetadata.Alternates.Add(
String.Format("{0}__{1}", shapeType, displayType));
displayedContext.ShapeMetadata.Alternates.Add(
String.Format("{0}__{1}__{2}", shapeType, (string)contentType, displayType));
});
}
}
}
这给了我更多选择的替代品,&#34;开箱即用&#34;。它们甚至出现在Shape Tracing工具中,可以使用它来创建适当的cshtml文件。