如何在我的果园中的内容类型上添加count()方法



我有一个名为"新闻"的内容类型, TitleBodyAutoroute和a TextField。我有两个问题:

  1. 通过名为作者的文本字段来计数内容项的价值(不能使用分类学术语)。

  2. 按日期计算内容项目的总和(从2017-01-01到2017-12-31)

现在,我想在我的内容类型上添加一个count()方法,以便我可以过滤,分类和使用投影。

我该怎么做?
还是您有更好的方法?

谢谢!

我会使用果园ISearchService。只需将ContentType添加到搜索索引(您可以具有多个索引),然后检查要包含的字段,例如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;

就您的内容类型的描述而言,我认为果园已经为投影提供了所有必要的过滤器。
如果您需要特殊的东西,则需要实现自己的FilterProvider。ContentTypesFilter是如何做到这一点的一个很好的例子。

最新更新