0

ユーザーの閲覧数に応じていくつかのページをソートするプロジェクションを作成したいと考えています。そこで、投票モジュールをインストールしてから、コンテンツ ビュー カウンター モジュールをインストールしました。後者を有効にして、すべてのページにビュー カウンターを表示することができました。しかし、数に基づいて並べ替えるクエリを作成しようとすると、ビュー数 クエリ リストにそのようなパラメーターはありません。ビューカウントの数に基づいてクエリをソートするにはどうすればよいですか?ビューカウントをソート可能にする方法はありますか?

PS 私の最初の考えは、ビュー カウンターの値を持つ新しいフィールドをページに追加することです。

4

2 に答える 2

1

[クエリ] で、[バインディング] タブをクリックし、投票カウンターのバインディングを追加します。それが完了したら、並べ替え基準としてカウンターを追加できるはずです。

于 2013-03-07T17:08:13.740 に答える
0

TotalViews でクエリを並べ替えることができるようにするには、コンテンツ ビュー カウンター モジュール内のいくつかのコード部分を変更する必要があります。

1)モデルの修正

public class UserViewRecord : ContentPartRecord
{
    public virtual int TotalViews { get; set; }
}

public class UserViewPart : ContentPart<UserViewRecord>
{
    [Required]
    public int TotalViews
    {
        get { return Record.TotalViews; }
        set { Record.TotalViews = value; }
    }
}

実際には、合計ビューを保存できるときにテーブルを作成します。したがって、さらに2つの手順に従う必要があります

2) migration.cs にコードを追加します。

public int UpdateFrom2() {

        SchemaBuilder.CreateTable("UserViewRecord", table => table
          .ContentPartRecord()
          .Column("TotalViews", DbType.Int32)
      );

        ContentDefinitionManager.AlterPartDefinition(
            typeof(UserViewPart).Name, cfg => cfg.Attachable());

        return 3;
    }

3) ハンドラー クラスを変更して、UserViewRecord の IRepository をこの部分のストレージとして使用する必要があることを指定します。

 public UserViewPartHandler(IVotingService votingService,
        IOrchardServices orchardServices, IRepository<UserViewRecord> repository)
    {
        _votingService = votingService;
        _orchardServices = orchardServices;
        Filters.Add(StorageFilter.For(repository)); 
        //more code
        //more code

     }

結局、Bertrand Le Roy が言ったように、TotalViews プロパティのバインドを追加して、TotalViews を並べ替え基準として使用できます。

于 2013-03-11T16:42:16.287 に答える