我认为,我想要添加到我的Orchard(1.6)网站的一个简单功能,但我找不到任何有关如何操作的教程或说明。我有一个名为“Office”的自定义类型,每个办公室都有一个名为“State”的自定义字段,表明办公室所处的状态。我实际上将我的办公室设计为代码中的自定义部分,具有特定属性,例如State on it,但是我“想想”就像我通过Admin界面将State添加为Office内容部分的字段一样。
现在,我可以创建一个基本投影,向所有办公室显示“Office with type Office”的简单过滤器,以显示所有办公室。但是,我现在要做的是在页面顶部有一个下拉列表,其中显示“按以下方式过滤:[ - SELLECT STATE - ] ”,其中包含所有50个州的列表。当用户选择状态时,页面应刷新并仅显示该状态的办公室。
这就是我被困住的地方。我应该通过代码执行此操作,还是可以通过管理UI执行此操作?如果通过代码,我应该在Orchard.Search模块之后对其进行建模(我试图这样做,但我完全迷失了)。如果我可以通过UI完成,我是否使用投影?如果是这样,我是否必须创建50个单独的投影(每个状态一个)?创建和维护这似乎非常耗时。
非常感谢任何帮助!
仅供参考,http://ktowneric.com/listings/search(使用Orchard)的网站与我正在寻找的网站非常相似,开发人员表示他使用了预测,但我似乎无法弄清楚他是如何做到的。< / p>
答案 0 :(得分:13)
你绝对可以使用投影。如果您在引用的页面上使用搜索功能时注意到,则输入将形成查询字符串值。您可以使用标记从查询字符串中获取要在投影过滤器中使用的值。例如,如果您正在使用您所述的字段,那么您只需为该字段添加过滤器,并在值字段中使用{Request.QueryString:State}。或者,将“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>
“/ search-results”可以是投影页面或任何具有投影小部件的内容。您可以将表单构建为可以放置在某个位置的窗口小部件,或者出于测试目的,您可以将此html粘贴到html窗口小部件中进行试用。