2020-02-13

Craft CMS のダッシュボードで詳細な絞り込み検索をする #craftcms

データをたくさん管理して管理画面でフィルタかけたりしたいというときは必須なプラグインなきがする。

これまでの案件とかでも使えそうだなぁ。

Craft CMS のデフォルトはキーワード検索

Craft CMS のダッシュボードで検索するときはキーワード検索が基本になっている。

一応検索の構文があるのでそれを使うことで細かく検索することはできる。

検索 | Craft 3 ドキュメント
https://docs.craftcms.com/v3/j...

その詳細な検索を簡単に指定できるようにするのが Easy Search プラグイン。

Easy Search
https://plugins.craftcms.com/e...

ということで、このプラグインを試してみた。

プラグインのインストール

$ composer require nilsenpaul/craft-easy-search

でやったんだけどなんかエラーが出たので、とりあえず管理画面からインストールした。

検索条件を追加できるメニュー

インストールするとこのような感じで検索条件を追加できるメニューを表示できるようになる。

タイトルに「サンプル」を含むものを検索

設定を入れるとそれが検索条件として検索フィールドにリアルタイムに反映されていくような感じ。

日本語だと変換がある分、最初どうなってるのかわかりにくいかもしれない。

タイトルに「サンプル」を含まない検索

検索の条件を増やすことも可能

タイトルに「サンプル」を含み、sampleRelationのフィールドで「select4」が選ばれているものを検索する。

検索対象として選択できるもの

検索の対象はデフォルトフィールドのタイトル、Slug、に加えて入力タイプで設定しているフィールドになる。

このセクションの入力タイプの設定。

あらかじめ選択できる検索条件の追加

決まった条件で検索したいといったものがある場合にはあらかじめそれを指定することもできる。

ドキュメントにある感じで config/easy-search.php を用意する。

craft-easy-search/README.md at master · nilsenpaul/craft-easy-search
https://github.com/nilsenpaul/...

設定ファイルにはドキュメントのサンプルをとりあえず入れてみる。

<?php

return [
  'queries' => [
    [
      'query' => 'title:*',
      'label' => 'All items with a title',
      'element' => 'craft\\elements\\Entry', // This is optional, and will make Easy Search only show this query on the Entries element index
    ],
    [
      'query' => 'image:*',
      'label' => 'All items with an image',
    ],
    [
      'query' => '-image:*',
      'label' => 'All items without an image',
    ],
  ]
];

これを設定すると、検索条件がデフォルトで追加される。

よく使う検索条件とかをこれであらかじめ指定しておくのはいいかもしれない。

設定ファイルにはセクションごとの分岐とかはなさそうな?気がするけど、できるのかな。。。

オリジナルの一覧画面が不要になるか?

セクションやエントリがたくさんあるときとか、管理画面で特定の条件でフィルタした一覧ページを独自に作りたいとか、とりあえず一覧を作ってもらって、それをフィルタできるようなのがあるといいなー、ってのは @tinybeans @BUN に相談してたりしたのだけど、このプラグインで解決するかもしれない。 

案件では独自にプラグインを作ってもらったりして、便利に使えるようにしてもらってる。
表示する要素とかの調整を考えると独自の方がメリットもあるかもしれないけど。。。

Matrix フィールドで作られていてブロック単位で、、、、とかになるとそれはまた複雑な話にはなりそう。。

とはいえ、独自のダッシュボードをプラグインで作らなくても必要なデータを取り出す条件を設定ファイルで定義できるのはすごくよさそうだ。