3

Orchard 1.6 で、Offer という名前のカスタム コンテンツ タイプを定義しました。この Offer には pack フィールドがあります。1 つのオファーを表示するページで、同じパックの他のオファーの短いリストを表示したいと考えています。

これを行うためにプロジェクションを作成しようとしましたが、現在表示されているオファーのパック フィールドとパック フィールドが等しくなければならないことをクエリ フィルターで指定するにはどうすればよいですか?

ありがとうございました。

4

2 に答える 2

2

リクエストで後で使用するために、現在表示されているコンテンツ アイテムを格納するコンテンツ ハンドラを作成できます。

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 を参照してください。)

于 2013-02-26T12:52:41.043 に答える
0

これが現在可能であるとは思いません。これを行うには、独自のコードを作成する必要があります。

于 2013-01-20T02:05:20.757 に答える