2010-01-15 148 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