Orchard根据过滤的下拉选项创建投影或搜索

big*_*mac 9 orchardcms

我有,我认为是一个简单的功能,我试图添加到我的Orchard(1.6)网站,但我找不到任何教程或说明如何做到这一点.我有一个名为"Office"的自定义类型,每个办公室都有一个名为"State"的自定义字段,表示办公室所处的状态.我实际上将我的办公室设计为代码中的自定义部分,具有特定属性,例如State on it,但是我"想想"就像我通过Admin界面将State添加为Office内容部分的字段一样.

现在,我可以创建一个基本投影,向所有办公室显示一个简单的"Content with type Office"过滤器,以显示所有办公室.但是,我现在要做的是在页面顶部有一个下拉列表,其中显示" 按以下方式过滤:[-SELECT STATE-] ",其中包含所有50个州的列表.当用户选择状态时,页面应刷新并仅显示该状态的办公室.

这就是我被困住的地方.我应该通过代码执行此操作,还是可以通过管理UI执行此操作?如果通过代码,我应该在Orchard.Search模块之后对其进行建模(我试图这样做,但我完全迷失了).如果我可以通过UI完成,我是否使用投影?如果是这样,我是否必须创建50个单独的投影(每个状态一个)?创建和维护这似乎非常耗时.

任何帮助是极大的赞赏!

仅供参考,http://ktowneric.com/listings/search(使用Orchard)的网站与我正在寻找的非常相似,开发人员表示他使用了预测,但我似乎无法弄清楚他是如何做到的它.

Bra*_*yce 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>
Run Code Online (Sandbox Code Playgroud)

"/ search-results"可以是投影页面或具有投影小部件的任何内容.您可以将表单构建为可以放置在某个位置的窗口小部件,或者出于测试目的,您可以将此html粘贴到html窗口小部件中以进行尝试.

  • ...我希望我之前找到了这个答案*我挖掘了所有的源代码并找出了如何自己做HQL查询... (2认同)