2017-03-12 7 views
0

私はTitle,Body,AutorouteおよびTextFieldというコンテンツタイプの "ニュース"を持っています。私は2つの問題があります:orchardのコンテンツタイプにCount()メソッドを追加するには?

  1. コンテンツ項目の値を、Authorという名前のテキストフィールド(タクソノミー用語を使用できません)でカウントします。

  2. (2017年1月1日から2017年12月31日まで)日によって

をコンテンツ項目の合計をカウントするために今、私は私のコンテンツタイプにカウント()メソッドを追加したいですプロジェクションをフィルタリング、並べ替え、使用することができます。

どうすればいいですか?
または、より良い方法がありますか?

ありがとうございます!

答えて

0

私は果樹園ISearchServiceを使っています。ただadd your ContentType to a search index(複数のインデックスを持つことができます)と、含めるフィールドを確認してください(createdauthorなど)。

次に、あなたはこのように検索しISearchServiceTotalItemCountプロパティを使用することができます。

var pager = new Pager(this.OrchardServices.WorkContext.CurrentSite, page, pageSize); 
var searchSettingsPart = this.OrchardServices.WorkContext.CurrentSite.As<SearchSettingsPart>(); 

// Orchard.Search.Services.ISearchService 
var searchHits = this.searchService.Search.Query(
    searchText, 
    pager.Page, 
    pager.PageSize, 
    searchSettingsPart.FilterCulture, 
    searchSettingsPart.SearchIndex, 
    searchSettingsPart.GetSearchFields(searchSettingsPart.SearchIndex), 
    searchHit => searchHit); 

var count = searchHits.TotalItemCount; 

限り、あなたのContentTypeをの記述が行くように、私はオーチャードはすでに投影に必要なすべてのフィルタを提供していと思います。
特別なものが必要な場合は、独自のFilterProviderを実装する必要があります。 ContentTypesFilterはこれを行う方法の良い例です。

+0

ありがとうございますXceno、ISearchServiceのTotalItemCountプロパティを使用する独自の検索モジュールを作成する必要がありますか?これどうやってするの? – jiangyo4

+0

@ jiangyo4検索モジュールに組み込まれた果樹園を使うことができます。しかしそれはあなたの状況に左右されるかもしれません。正確にTotalItemCountが必要なのはどこですか? あなたは正確に何を構築しようとしていますか? – Xceno

+0

私はこのような統計を表示したいと思います:1. "Peter":20posts; 2.「リンダ」:15柱。 3. "メアリー":10ポスト。 ....著者名のテキストフィールドでは、著者は登録とサインインを必要としないため、著者名はわかりません。 – jiangyo4

関連する問題