我想找出一种方法来搜索帖子的自定义字段。基本上,我需要的是找到post.CustomField1 ==“一些值”涂鸦CMS:搜索自定义字段
我已经搜索和搜索,并通过Graffiti CMS源代码(graffiticms.codeplex.com)挖,不能弄清楚我将如何做到这一点。
我想找出一种方法来搜索帖子的自定义字段。基本上,我需要的是找到post.CustomField1 ==“一些值”涂鸦CMS:搜索自定义字段
我已经搜索和搜索,并通过Graffiti CMS源代码(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的搜索引擎。如果你想启用搜索特定的自定义字段值,你需要对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值的任何帖子。
希望有帮助!
这些都不是我正在寻找的确切解决方案,但我认为后者将起作用。谢谢。 – 2010-01-27 20:39:03
你想在粉笔/宏代码或通过重写C#来做到这一点?解决方案将有所不同。 – 2010-01-23 23:19:39