ビュー公開フィルターと検索を組み合わせる方法は?


18

私のクライアントは、2つの方法で機能する単一のフィールドを要求しました。

  • 分類法に基づくオートコンプリートフィルター。
  • サイト訪問者が分類法にないものを入力した場合、コンテンツの本文で全文検索を実行し、適切な情報メッセージを表示する必要があります。

そうすれば、ユーザーがカテゴリ名を入力すると、手で選んだノードが一覧表示され、それ以外の場合は少なくともいくつかのコンテンツが取得されます。

それとは別に、簡単です。しかし、これらの動作を1つのフィールドに結合する方法は?


1
それとは別に、どのモジュールを使用して分類法に基づいて自動補完するかは簡単ですか?私のためのトリックはそこには、結果の変更はありません、それはへ/検索/ yourkeywordsearchリダイレクトされますので、ボタンアクションを提出するかどうかをチェックします小さなJavaScriptコードになります
sel_space

回答:


17

Finderモジュールは要件を正確に実行します。検索を実行するために、分類用語とノードタイトル、本文、フィールドなどを選択できます。

ファインダーの機能を組み合わせて、必要な種類の検索フォームを取得する方法は多数あります。また、多くのフックとテーマ関数があり、ファインダーの出力を完全にカスタマイズできます。

次の目的で使用されます。

As a search tool to find a group of nodes or users.
As a way to navigate to a specific node or user page that matches criteria.
As an alternative to exposed filters for a Views module display.

以下のスクリーンショットを参照してください。ファインダーフィールドでは、分類用語とノード本体を選択して、オートコンプリート公開フィールドで検索を実行できます。複数のキーワード検索をコンマで区切って実行することもできます。詳細については、Finderのドキュメントを参照してください。

ここに画像の説明を入力してください

要素を追加したら、リストから検索フィールドを選択できます。

Ctrlキーを押して、分類用語Node:Bodyを選択します


少し古く、共同メンテナンスが必要ですが、私のニーズをすべて満たしているようです。テストする必要がありますが、これまでのところ、それは私のユースケースに最適な答えのようです。
モウォ

動作しているようです。私はそれを少し調整する必要がありますが、それは仕事をすることができます。
モウォ

3

私はテストせずに書いていますが、少なくとも出発点として使用できると感じています。

Views Field Viewモジュールを使用すると、ビューを別のビューに埋め込むことができます。また、コンテキストビューのフィルターを埋め込みビューに渡すこともできます。

あなたの場合、特定のフィルターを検索するコンテキストフィルターを備えた別のビューを作成します。コンテキストフィルターを使用して検索できる場合、その点についてはわかりませんが、「検索:用語」などのオプションがいくつかあります。

とはいえ、この最初のステップをとにかく達成できれば、残りは比較的簡単です。

元のビューで、詳細オプションセクションの下に「結果なしの動作」を追加し、「グローバル:ビュー(ビューフィールドビュー)」を追加して、以前に作成したビューを選択し、公開されたフィルターのトークンを埋め込みビューへのコンテキストフィルター(置換パターンのリストでトークンを見つけることができます)。


1
興味深いアイデアですが、私はそれを機能させることができませんでした。たくさんの設定をしてから、Balaが既製のモジュールを投稿し、私は心を失いました。
モウォ

はい、Finderモジュールについては知りませんでした。私も自分のプロジェクトでそれを使用すると思います。Finderがあなたの期待通りのことをしてくれたら、コメントで教えていただければ嬉しいです。
ЕлинЙ.

3

私は上記の議論を行ったことがあり、おそらく以下のシナリオは「露出されたビューを検索と検索を組み合わせる方法?」という投稿に対処できます。実装には、いくつかのカスタムコーディングが必要になります。

  1. URL http://www.seedandspark.com/studioを検討してください
  2. ここの左側には、検索フォームがあります。これはカスタムフォーム(form_id = 'sns_studio_form_filter')です。
  3. コンテンツ領域には、約7〜8個のビューブロックとすべての動的情報を生成します(匿名ユーザーの場合は3ブロックのみ)
  4. これで、各ビューブロックでフィルターが有効になりました。
  5. これらの公開されたフィルターはビューから隠されています
  6. ビュー公開フィルターを使用する場合、URL構造をメモしておきます
  7. カスタムフォーム送信ハンドラーでは、カスタムフォームのフィールドから情報を取得し、手順6でメモしたのと同様のURLを生成します。最後に、そのURLにリダイレクトします。送信ハンドラでは次のようになります::

    $form_state ['redirect'] = array(
      $path, 
      array(
        'query' => $params // $params is the url
      )
    );
    drupal_redirect_form( $form_state );

したがって、ステップ7が実行されると、すべてのビューブロックは、設定したフィルター基準に基づいてフィルターされます。

それが役に立てば幸い。


3

別の方法もあります:Concat Fieldモジュールを試すことができます。基本的にフィールドをコンテンツタイプに追加し、このフィールドによるフィルターを検索として使用できます。

Finderと非常によく似ていますが、私は同意しますが、まだ言及する価値があると思います。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.