我想找出一種方法來搜索帖子的自定義字段。基本上,我需要的是找到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