2010-01-15 3 views
0

게시물의 사용자 정의 필드를 통해 검색하는 방법을 찾으려고합니다. 기본적으로 내가 원하는 것은 post.CustomField1 == "some value"가있는 게시물을 찾는 것입니다.그래피티 CMS : 사용자 정의 필드 검색

Graffiti CMS 소스 코드 (graffiticms.codeplex.com)를 검색하고 검색하여 파고 들었습니다. 내가 어떻게하는지 알아 내.

+0

초크/매크로 코드에서이 작업을 시도하거나 C#을 다시 작성하려고합니까? 해결책은 달라질 것입니다. –

답변

0

EJB가 말했듯이 솔루션은 검색을 구현하려는 위치에 따라 다릅니다.

특정 사용자 정의 필드 값을 가진 게시물을 찾으려면 index.view 또는 카테고리보기와 같은 현재 페이지에 표시된 게시물 만 검색하면 다음과 같은 템플릿에서이를 수행 할 수 있습니다 :

#foreach($post in $posts) 
    #if($post.Custom("CustomField1") == "some value") 
    display or do something with $post 
    #end 
#end 

API를 사용하여 모든 게시물을 반복하고 사용자 정의 값을 확인할 수도 있습니다. 불행히도 Graffiti CMS에는 특정 사용자 정의 필드 값을 기반으로 게시물에 대한 데이터베이스를 쿼리하는 내장 메소드가 없습니다.

그러나 내장 Lucene 기반 검색 엔진을 사용할 수 있습니다. 검색을 사용하여 특정 사용자 정의 필드 값을 검색 할 수있게하려면 Graffiti.Core.SearchIndex 클래스의 소스 코드를 약간 수정해야합니다. CreateDocument 방법에서 다음과 같이 인덱스 문서에 사용자 정의 필드 값을 추가 : 두 가지로

return new MultiFieldQueryParser(new string[] { "body", "title", "CustomField1" }, a); 

:

doc.Add(Field.Text("CustomField1", t.Custom("CustomField1") ?? string.Empty)); 

는 그 다음 GetQueryParser 방법으로 검색 할 필드 목록에 해당 키를 추가 위의 변경 사항을 사용하면 "일부 값"에 대한 검색을 수행하고 CustomField1 값을 가진 모든 게시물을 반환 할 수 있습니다.

희망 하시겠습니까?

+0

이들 중 어느 것도 내가 찾고있는 정확한 해결책은 아니지만 후자가 효과가 있다고 생각합니다. 감사. –