0

投稿のカスタムフィールドを検索する方法を見つけようとしています。基本的に、私が必要としているのは、post.CustomField1=="somevalue"である投稿を見つけることです。

私はGraffitiCMSソースコード(graffiticms.codeplex.com)を検索して検索し、掘り下げていましたが、これをどのように行うかがわかりません。

4

1 に答える 1

0

EJBが言ったように、ソリューションは検索を実装する場所によって異なります。

特定のカスタムフィールド値を持つ投稿を検索する場合は、現在のページに表示されている投稿(index.viewやカテゴリビューなど)だけを検索すると、次のようなテンプレートでChalkを使用して検索できます。

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

APIを使用して、すべての投稿を繰り返し処理し、カスタム値を確認することもできます。残念ながら、Graffiti CMSには、特定のカスタムフィールド値に基づいて投稿をデータベースにクエリする組み込みのメソッドがありません。

ただし、組み込みのLuceneベースの検索エンジンを使用することもできます。searchを使用して特定のカスタムフィールド値の検索を有効にする場合は、Graffiti.Core.SearchIndexクラスのソースコードを微調整する必要があります。CreateDocumentメソッドで、次のようにカスタムフィールド値をインデックス付きドキュメントに追加します。

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

次に、GetQueryParserメソッドで、検索するフィールドのリストにそのキーを追加します。

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

上記の2つの変更により、「何らかの値」を検索して、CustomField1の値を持つ投稿を返すことができます。

お役に立てば幸いです。

于 2010-01-25T22:04:30.503 に答える