我正试图找出一种搜索帖子自定义字段的方法。基本上,我需要的是找到post.CustomField1 ==“some value”的帖子
我已经搜索并搜索过Graffiti CMS源代码(graffiticms.codeplex.com)并且无法弄清楚我是如何做到的。
答案 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值的帖子。
希望有所帮助!