Graffiti CMS:搜索自定义字段

时间:2010-01-15 15:58:06

标签: c# graffiticms

我正试图找出一种搜索帖子自定义字段的方法。基本上,我需要的是找到post.CustomField1 ==“some value”的帖子

我已经搜索并搜索过Graffiti CMS源代码(graffiticms.codeplex.com)并且无法弄清楚我是如何做到的。

1 个答案:

答案 0 :(得分: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的搜索引擎。如果要使用搜索启用搜索特定自定义字段值,则需要对Graffiti.Core.SearchIndex类中的源代码进行一些调整。在CreateDocument方法中,将自定义字段值添加到索引文档中,如下所示:

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

然后在GetQueryParser方法中将该键添加到要搜索的字段列表中:

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

通过上面的两个更改,您可以搜索“某个值”并让它返回任何具有CustomField1值的帖子。

希望有所帮助!