私のクライアントは、2つの方法で機能する単一のフィールドを要求しました。
- 分類法に基づくオートコンプリートフィルター。
- サイト訪問者が分類法にないものを入力した場合、コンテンツの本文で全文検索を実行し、適切な情報メッセージを表示する必要があります。
そうすれば、ユーザーがカテゴリ名を入力すると、手で選んだノードが一覧表示され、それ以外の場合は少なくともいくつかのコンテンツが取得されます。
それとは別に、簡単です。しかし、これらの動作を1つのフィールドに結合する方法は?
私のクライアントは、2つの方法で機能する単一のフィールドを要求しました。
そうすれば、ユーザーがカテゴリ名を入力すると、手で選んだノードが一覧表示され、それ以外の場合は少なくともいくつかのコンテンツが取得されます。
それとは別に、簡単です。しかし、これらの動作を1つのフィールドに結合する方法は?
回答:
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を選択します
私はテストせずに書いていますが、少なくとも出発点として使用できると感じています。
Views Field Viewモジュールを使用すると、ビューを別のビューに埋め込むことができます。また、コンテキストビューのフィルターを埋め込みビューに渡すこともできます。
あなたの場合、特定のフィルターを検索するコンテキストフィルターを備えた別のビューを作成します。コンテキストフィルターを使用して検索できる場合、その点についてはわかりませんが、「検索:用語」などのオプションがいくつかあります。
とはいえ、この最初のステップをとにかく達成できれば、残りは比較的簡単です。
元のビューで、詳細オプションセクションの下に「結果なしの動作」を追加し、「グローバル:ビュー(ビューフィールドビュー)」を追加して、以前に作成したビューを選択し、公開されたフィルターのトークンを埋め込みビューへのコンテキストフィルター(置換パターンのリストでトークンを見つけることができます)。
私は上記の議論を行ったことがあり、おそらく以下のシナリオは「露出されたビューを検索と検索を組み合わせる方法?」という投稿に対処できます。実装には、いくつかのカスタムコーディングが必要になります。
form_id = 'sns_studio_form_filter'
)です。カスタムフォーム送信ハンドラーでは、カスタムフォームのフィールドから情報を取得し、手順6でメモしたのと同様のURLを生成します。最後に、そのURLにリダイレクトします。送信ハンドラでは次のようになります::
$form_state ['redirect'] = array(
$path,
array(
'query' => $params // $params is the url
)
);
drupal_redirect_form( $form_state );
したがって、ステップ7が実行されると、すべてのビューブロックは、設定したフィルター基準に基づいてフィルターされます。
それが役に立てば幸い。
別の方法もあります:Concat Fieldモジュールを試すことができます。基本的にフィールドをコンテンツタイプに追加し、このフィールドによるフィルターを検索として使用できます。
Finderと非常によく似ていますが、私は同意しますが、まだ言及する価値があると思います。