2010-01-15 118 views
0

我想找出一种方法来搜索帖子的自定义字段。基本上,我需要的是找到post.CustomField1 ==“一些值”涂鸦CMS:搜索自定义字段

我已经搜索和搜索,并通过Graffiti CMS源代码(graffiticms.codeplex.com)挖,不能弄清楚我将如何做到这一点。

+0

你想在粉笔/宏代码或通过重写C#来做到这一点?解决方案将有所不同。 – 2010-01-23 23:19:39

回答

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值的任何帖子。

希望有帮助!

+0

这些都不是我正在寻找的确切解决方案,但我认为后者将起作用。谢谢。 – 2010-01-27 20:39:03