9

Orchard(1.6)サイトに追加しようとしている簡単な機能がありますが、その方法に関するチュートリアルや手順が見つかりません。「Office」というカスタムタイプがあり、各オフィスには「State」というカスタムフィールドがあり、オフィスの状態を示しています。実際には、Stateなどの特定のプロパティを持つコードでカスタムパーツとしてOfficeを設計しましたが、 「考える」とは、Officeコンテンツ部分のフィールドとして管理インターフェイスから状態を追加した場合と同じです。

これで、「Officeタイプのコンテンツ」の単純なフィルターを使用してすべてのオフィスを表示する基本的な投影法を作成して、すべてのオフィスを表示できます。ただし、ここで実行したいのは、ページの上部に「Filter by:[-SELECT STATE-]」というドロップダウンリストと、50の状態すべてのリストを表示することです。ユーザーが州を選択すると、ページが更新され、その州のオフィスのみが表示されます。

これは私が立ち往生しているところです。コードを介してこれを行う必要がありますか、それとも管理UIを介してこれを行うことができますか?コードを使用する場合は、Orchard.Searchモジュールをモデルにする必要があります(これを実行しようとしましたが、完全に失われました)。UIから実行できる場合、プロジェクションを使用しますか?もしそうなら、私は50の別々の投影(各州に1つ)を作成する必要がありますか?これは、作成と保守に非常に時間がかかるようです。

どんな助けでも大歓迎です!

参考までに、 http://ktowneric.com/listings/search (Orchardを使用)のサイトは私が探しているものと非常に似ており、開発者は彼がプロジェクションを使用したと述べましたが、彼がどのようにしたか理解できないようですそれ。

4

1 に答える 1

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ウィジェットに貼り付けて試すこともできます。

于 2012-11-16T02:32:27.450 に答える