投稿のカスタムフィールドを検索する方法を見つけようとしています。基本的に、私が必要としているのは、post.CustomField1=="somevalue"である投稿を見つけることです。
私はGraffitiCMSソースコード(graffiticms.codeplex.com)を検索して検索し、掘り下げていましたが、これをどのように行うかがわかりません。
投稿のカスタムフィールドを検索する方法を見つけようとしています。基本的に、私が必要としているのは、post.CustomField1=="somevalue"である投稿を見つけることです。
私はGraffitiCMSソースコード(graffiticms.codeplex.com)を検索して検索し、掘り下げていましたが、これをどのように行うかがわかりません。
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の値を持つ投稿を返すことができます。
お役に立てば幸いです。