検索フォームの実装

次に検索フォームを実装します。サンプルサイトの製品紹介ページの左カラムには検索フォームがブロックで配置してあります。「製品名」「製品カテゴリ」「ページ毎の件数」の項目で絞り込みができるようになっています。また、ここでもAJAXによる画面遷移を伴わない検索結果の表示が実装されています。

image alt text


1.Viewsの「製品紹介ページ」の設定画面から「フィルターの条件」を確認します。この「フィルターの条件」では表示させるコンテンツの抽出条件を設定できます。

現在は「コンテンツ: 掲載ステータス (= はい)」と「コンテンツ: コンテンツタイプ (= 製品紹介)」が設定されています。

これは、「掲載が許可されている、製品紹介コンテンツタイプのコンテンツ」を表示するという設定になっています。

「フィルターの条件」の「を追加」ボタンをクリックします。

image alt text


2.「フィルター条件を追加」ウィンドウが開き、さまざまな条件を追加できます。ウィンドウをスクロールしてどのような条件があるのかを一通り確認すると、非常に細かい抽出条件での絞り込みが可能なのがわかります。

まずは「タイトル」にチェックを入れ、「対象」を「このpage(上書き)」を選択して「適用」をクリックします。

image alt text


3.「設定 フィルター条件:コンテンツ:タイトル」ウィンドウが開きます。

今回は「製品紹介」コンテンツのタイトルによる絞り込み機能を実装するのが目的です。これには、ログインをしていないサイト訪問者がタイトルによる絞り込み機能を利用できる設定にする必要があります。そのため、「このフィルターを訪問者へ表示し、変更できるようにする」チェックボックスにチェックを入れます。

image alt text


4.「設定 フィルター条件:コンテンツ:タイトル」ウィンドウが開きますので、ここでは訪問者向けのフォームの設定を行います。「ラベル」に「製品名」を入力し、「オペレーター」メニューから「含む」を選択し「適用」「保存」ボタンをクリックします。

image alt text


※「オペレーター」メニューではさまざまな一致条件を選択可能です。初期設定では「等しい」となっています。「等しい」が設定されていると、フォームに「猫」と入力して検索した場合には完全一致したコンテンツのみが表示されるので、「DRUPAL猫(白)」や「DRUPAL猫(黒)」などは検索結果に表示されません。そのため、ここでは「含む」を選択します。これにより、「猫」という文字列を製品名に含むコンテンツが検索結果に表示されるようになります。

image alt text


5.「製品紹介」ページを確認します。製品一覧の上部に検索フォームが実装されました。製品名に「猫」と入力して検索をクリックします。

image alt text


すると、製品名に猫を含む、2つのコンテンツが絞り込み表示されました。画面の遷移もなくAJAXで実装されているのが確認できます。次に「製品カテゴリ」による絞り込み機能を実装します。

image alt text


6.先ほど同様に「フィルターの条件」画面から「タクソノミータームを含む」にチェックを入れ「適用」をクリックします。

image alt text


7.新たなウィンドウが開きますので、「ボキャブラリー」で「製品カテゴリ」を選択し、「選択タイプ」で「ドロップダウン」を選択し「適用して続ける」ボタンをクリックします。

image alt text


8.「設定 フィルター条件:コンテンツ:タクソノミータームを含む」ウィンドウが開きます。「このフィルターを訪問者へ表示し、変更できるようにする」にチェックを入れ「適用」ボタンをクリックします。

image alt text


9「設定 フィルター条件:コンテンツ:タクソノミーを含む」ウィンドウが開きます、「ラベル」に「製品カテゴリ」と入力し「適用」「保存」ボタンをクリックします。

image alt text


10.製品カテゴリによる絞り込み機能が実装されました。次に、ページ毎に表示される件数も同様に訪問者が選択できるように設定します。

image alt text


11.再びViewsの「製品紹介」ページの設定ページで、「ページャー」セクションの「ページ分け、8件のアイテム」リンクをクリックします。

image alt text


12.「製品紹介ページ: ページャーオプション」ウィンドウを下までスクロールし、「ユーザーにこのビューにいくつのアイテムが表示されるかを管理することを許可します。」にチェックを入れます。設定項目が開きますので「ページあたり項目数の選択肢」に「8, 16, 24, 32」と入力します。これは、表示件数を選択する際の選択肢として利用されます。ここに設定する件数は、初期表示が8件なので、その倍数である「8, 16, 24, 32」などである必要があります。

「Allow user to display all items」にもチェックを入れて「適用」「保存」をクリックします。

image alt text


13.「ページ毎の件数」が選択できるようになりました。件数を設定して検索ボタンをクリックして挙動を確認します。

これで、目的とする項目での絞り込み機能の実装が完了しました。

image alt text

検索フォームをブロックとして設置する。

現状ではフォームは「製品紹介」の一覧リストの上部に表示されています。これをサンプルサイトのように、左カラムへブロックとして表示する設定を行います。

image alt text


1.Viewsの「製品紹介(コンテンツ)」画面の「製品紹介ページ」ビューの、「高度」をクリックして開くメニューから、「外部設置フォームをブロックで提供」の「いいえ」をクリックします。

image alt text


2.「製品紹介ページ:外部設置フォームをブロックで表示」ウィンドウが開きますので「はい」にチェックを入れて「適用」「保存」します。

image alt text


3.ページを確認するとフォームが表示されなくなりました。今までViewsページの中に表示されていたフォームがブロックとして出力されています。そのため、ブロックとして再度設置する必要があります。

管理者メニューの「サイト構築」から「ブロックレイアウト」リンクをクリックして、「Left Sidebar」リージョンの「ブロックを配置」ボタンをクリックします。

image alt text


4.「ブロックを配置」ウィンドウから「外部設置フォーム: pruduct-page_1」の「ブロックを配置」をクリックします。

image alt text


5.「ブロックの設定」画面で「ページ」タブをクリックし「/product」と入力し「ブロックの保存」ボタンをクリックします。

image alt text


6.設置した「外部設置フォーム: pruduct-page_1」以外のブロックを、「Left Sidebar」リージョンから無効に設定して以下の画像のように設定して、画面下の「ブロックの保存」ボタンをクリックします。

※ブロックをリージョンから無効にする方法は、連載第3回の「作成した「Viewsブロック」をトップページに配置する」を参考にしてください。

image alt text


7.「外部設置フォーム: pruduct-page_1」が左カラムに設置されました。再度、正常に作動するかを確認します。

image alt text


8.管理者メニューの「サイト構築」をクリックし、「メニュー」リンクから「メニュー」画面に移動し、「/product」パスを「メインナビゲーション」メニューに登録します。これでメインメニューに「製品紹介」ページへのリンクが作成されました。

image alt text


この連載が書籍になりました! Drupal 8初の日本語解説書『Drupal 8 スタートブック』好評発売中です。
この記事のキーワード :

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30