私はいくつかのフィールドを持つ新しいコンテンツタイプを作成しました(それらのいくつかは私が自分で作成したカスタムフィールドです)。次に、これらの各フィールドに検索機能を実装する必要があります。
つまり、これらのフィールドがある場合:
これら4つのフィールドを持つ検索モジュールが必要なので、職業「エンジニア」を検索すると、その特定のフィールドに挿入されたデータのみが検索されます。
何をする必要がありますか?どの追加モジュールをインストールする必要がありますか?カスタムフィールドをどうすればよいですか?
コードでノードにアクセスする必要がある場合は、delmiのソリューションが機能するはずです。
既存のモジュールを使用する場合は、ビューが役立ちます。 NodeOneのビューに関するビデオチュートリアルが非常に役立つことがわかりました: http://dev.nodeone.se/node/781
私はD7のエキスパートではありませんが、次のようなEntityFieldQueryを試すことができます。
$query = new EntityFieldQuery();
$entities = $query->entityCondition('entity_type', 'node')
->entityCondition('bundle', 'YOUR_CONTENT_TYPE_NAME')
->propertyCondition('status', 1)
->fieldCondition('YOUR_FIELD_NAME', 'value', $searchterm)
// other conditions...
->propertyOrderBy('title')
->execute();
$nodes = entity_load('node', array_keys($entities['node']));
Views および Better Exposed Filters があなたにとってトリックになるのだろうか?ページビューを作成し、フィールドフィルターを公開します。次に、[詳細]列で、公開されたフィルターを構造>ブロックで表示するオプションを選択します。
ビュー3は、ボックスからの質問に対するソリューションを提供します。 Global: Combine fields
フィルター。
フィールドを追加する
追加 Global: Combine fields
filterで基準をフィルタリング
フィルターの設定で組み合わせるフィールドをチェックします
表示スイートまたはティーザーモードを使用する場合-表示設定のフィールドを強制的に使用します。
ソリューション2
ビューフィルターが読み込まれます -良いモジュールです。しかし、「STRING個の公開されたフィルターのみにデータが入力される」という1つの問題があります。
詳細については、 ビュー1つの公開フィルターを複数のフィールドに適用する に関する問題を参照してください。
Finder モジュールを使用して、フィールド固有の検索を作成します(Drupalのコア検索はフィールド固有ではなく全文検索です)。以下は、モジュールのプロジェクトページからの抜粋です。
... Drupalサイト管理者は、フィールドやデータベース属性の値に基づいてノードやユーザーなどのエンティティを検索するための柔軟なファセット検索フォームを作成できます。
通常、Finderは次の目的で使用されます。
- ノードまたはユーザーのグループを見つけるための検索ツールとして。
- 基準に一致する特定のノードまたはユーザーページに移動する方法として。
- Viewsモジュール表示用の公開フィルターの代替として。
コンテンツタイプのビューを作成し、検索するすべてのフィールドを公開フィルターとして追加します。これにより、すべてのフィルターされたフィールド(またはこれが必要な場合は1つ)の入力要素を含む検索フォームが作成されます。入力された入力フィールドのみをフィルタリングし、他のフィールドは無視するように設定できます。
検索フォームをビューの上部に配置するか、別のブロックに移動するかを選択できます。