2017-03-12 3 views
0

"News"라는 콘텐츠 형식이 Title, Body, AutorouteTextField입니다. 나는 2 가지 문제가 있습니다 :과수원에서 내 콘텐츠 유형에 Count() 메소드를 추가하는 방법은 무엇입니까?

  1. 저자 이름이 텍스트 필드 (분류 용어를 사용할 수 없음)로 콘텐츠 항목의 가치를 센다.

  2. 내가 내 콘텐츠 유형에 카운트() 메소드를 추가 할 지금 (2017년 1월 1일에서 2017년 12월 31일으로) 날짜

를하여 콘텐츠 항목의 총 합계를 계산하려면 그래서 나는 필터를 걸고, Projection을 정렬하고 사용할 수 있습니다.

어떻게하면됩니까?
아니면 더 나은 방법이 있습니까?

감사합니다.

답변

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. "Linda": 15posts; 3. "Mary": 10posts; .... 작성자라는 텍스트 필드를 사용하여 작성자가 등록하고 로그인 할 필요가 없으므로 작성자 이름을 모르겠습니다. – jiangyo4