在Orchard 1.6上,我定义了一个自定义内容类型Offer,该Offer具有Pack字段。在显示一个Offer的页面上,我想显示与相同Pack的其他Offer的简短列表。
为了实现这一点,我尝试制作一个投影,但如何在查询过滤器中指定Pack字段必须等于当前显示的Offer的Pack字段呢?
谢谢。
为了实现这一点,我尝试制作一个投影,但如何在查询过滤器中指定Pack字段必须等于当前显示的Offer的Pack字段呢?
谢谢。
public class MyContentHandler : ContentHandler
{
readonly IOrchardServices orchardServices;
public MyContentHandler (
IOrchardServices orchardServices)
{
this.orchardServices = orchardServices;
}
protected override void BuildDisplayShape(BuildDisplayContext context)
{
if (context.DisplayType == "Detail" && ((IShape)context.Shape).Metadata.Type == "Content" &&
orchardServices.WorkContext.GetState<ContentItem>("currentContentItem") == null)
{
orchardServices.WorkContext.SetState("currentContentItem", context.ContentItem);
}
}
}
接下来,您可以使用存储在状态中的内容项引用编写投影筛选器。(参见Orchard.Tags.Projections.TagsFilter作为编写投影筛选器的示例。)
我不相信目前可以实现这个。恐怕您必须编写自己的代码来完成此操作。