Orchardcms (ContentType/DisplayType)-果园中布局形状的特定替代
我使用Orchardcms (ContentType/DisplayType)-果园中布局形状的特定替代,orchardcms,Orchardcms,我使用Orchard 1.10.1 是否可以创建(ContentType/DisplayType)特定于Orchard布局形状的替代品 我需要在DisplaytypeDetail中为CustomContentType设置一个特定的备选布局 提前感谢。布局形状似乎没有现成的替代设置: 如果向下滚动一位到下一个区域,区域,则会看到它有一个ondisplay()事件处理程序,该处理程序在末尾添加了替换项 我不确定是否有一个内置的技巧支持这一点,我不知道。假设没有我也不知道的“布局”的任何特殊大小
Orchard 1.10.1
是否可以创建(ContentType
/DisplayType
)特定于Orchard布局形状的替代品
我需要在Displaytype
Detail中为CustomContentType
设置一个特定的备选布局
提前感谢。布局形状似乎没有现成的替代设置:
区域
,则会看到它有一个ondisplay()
事件处理程序,该处理程序在末尾添加了替换项
我不确定是否有一个内置的技巧支持这一点,我不知道。假设没有我也不知道的“布局”的任何特殊大小写,您可以制作自己的IShapeTableProvider
,它添加了一些替代项以满足您的需求
似乎有一些解释了如何做到这一点的想法
在注释中还提到,您可以启用形状跟踪器的Url替换功能,这可能有助于您对其进行排序。以下是基于内容类型的布局替换提供程序的示例:
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");
}
}
谢谢,伟大的向导。