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

【Drupal 8入門】Viewsによるコンテンツ一覧ページの作成(後編)―AJAXページャーや検索機能の実装

2016年9月1日(木)
ANNAI株式会社

検索フォームの実装

次に検索フォームを実装します。サンプルサイトの製品紹介ページの左カラムには検索フォームがブロックで配置してあります。「製品名」「製品カテゴリ」「ページ毎の件数」の項目で絞り込みができるようになっています。また、ここでも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


ANNAIは、2009年からDrupal専門のWebシステム開発会社として、世界規模で展開するグローバル企業や大学・自治体を中心に数多くのWebソリューションを提供。
CoreやModuleのコントリビューターなど、Drupalエキスパートが多数在籍。国内ユーザーコミュニティへも積極的にコミットし、定期的なセミナーの等の開催を通じて、オープンソース技術の普及や海外コミュニティとの緊密な連携を図っている。
Webシステムの企画・開発〜デザイン、クラウド運用までをワンストップで提供する他、Drupalのコーディングを評価する"Audit業務"や最適なモジュールの調査・選定等、幅広いコンサルティングを行っている。Drupalアソシエーション公式パートナー。
https://annai.co.jp

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています