我使用Orchard 1.10.1
。
是否可以在Orchard中创建布局形状的(ContentType
/ DisplayType
)特定替代?
我需要CustomContentType
详细信息中Displaytype
的布局的特定替代。
先谢谢。
答案 0 :(得分:1)
看起来布局形状没有开箱即用的替代设置:
如果向下滚动到下一个Zone
,那么您将看到它有一个OnDisplaying()
事件处理程序,最后添加了Alternates。
我不确定是否有一个内置的技巧支持我不知道的。假设没有任何特殊的“布局”外壳,我也不知道,你可以制作自己的IShapeTableProvider
,增加一些替代品以符合你的要求。
似乎有a tutorial over on Bertrands blog解释了如何做到这一点的一些想法。
在评论中,它还提到您可以启用Shape Tracer的Url Alternates功能,这可能有助于您对此进行排序。
答案 1 :(得分:0)
以下是基于ContentType的布局交替提供程序的示例:
public class LayoutAlternateProvider : ContentHandler
{
string contentType;
private readonly IWorkContextAccessor _workContextAccessor;
protected override void BuildDisplayShape(BuildDisplayContext context)
{
if (context.DisplayType == "Detail" && !IsWidget(context.ContentItem))
{
context.Layout.Metadata.Alternates.Add("Layout__" + context.ContentItem.ContentType);
}
}
private static bool IsWidget(ContentItem item)
{
return item.TypeDefinition.Settings.Any(setting => setting.Key == "Stereotype" && setting.Value == "Widget");
}
}