2012-11-15 42 views
9

我有,我認爲是一個簡單的功能,我試圖添加到我的果園(1.6)網站,但我找不到任何教程或說明如何去做吧。我有一個名爲「辦公室」的自定義類型,每個辦公室都有一個名爲「狀態」的自定義字段,指明辦公室處於哪個狀態。實際上,我將我的辦公室設計爲具有特定屬性(如狀態)的代碼中的自定義部分,但我「認爲」就像我通過管理界面將狀態添加爲Office內容部分中的字段一樣。果園創建基於篩選下拉選擇的投影或搜索

現在,我可以創建一個基本投影,以顯示所有辦公室的簡單過濾器「Content with type Office」以顯示所有辦公室。但是,我現在想要做的是在頁面頂部有一個下拉列表,其中顯示「篩選:[-SELECT STATE-]」,並列出所有50個州。當用戶選擇一個狀態時,該頁面應刷新並僅顯示該狀態下的辦公室。

這是我卡住的地方。我應該通過代碼執行此操作,還是可以通過管理界面執行此操作?如果通過代碼,我是否應該在Orchard.Search模塊(我試圖做但我完全失去了)之後對它進行建模。如果我可以通過用戶界面來完成,我是否使用投影?如果是這樣,我是否必須創建50個單獨的投影(每個州有一個投影)?這似乎是非常耗時的創建和維護。

任何幫助非常感謝!

僅供參考,網站http://ktowneric.com/listings/search(使用Orchard)與我正在尋找的非常相似,開發者聲明他使用了預測,但我似乎無法弄清楚他是如何做到的。

回答

13

你絕對可以使用投影。如果您注意到當您在所引用的頁面上使用搜索功能時,輸入會形成查詢字符串值。您可以使用令牌從查詢字符串中獲取值以用於投影過濾器。例如,如果您按照所述使用字段,那麼您只需爲該字段添加一個過濾器,並在值字段中使用{Request.QueryString:State}。或者,用您用於查詢字符串值的任何鍵替換「狀態」。

解決了您的投影問題。您將需要建立一個看起來像這樣的搜索表單...

<form action="/search-results" method="Get"> 
    <select name="State"> 
    <option value="OH">Ohio</option> 
    ...all the states... 
    </select> 
    <input type="submit" value="Search" /> 
</form> 

「/搜索結果」可能是一個投影頁面或具有本投影部件的任何內容。您可以將窗體構建爲可放置在某處的小部件,或者爲了測試目的,您可以將此html粘貼到一個html小部件中進行試用。

+2

...我希望我發現這個答案*之前*我挖通過所有的源代碼,並計算出如何做自己的HQL查詢... –