Craft CMS のエントリー一覧の検索を単語の途中でも一致するようにする

Craft CMS のエントリー一覧の上にあるキーワード検索は、デフォルトの挙動だと検索ワードが単語の一部の文字列ではヒットしません。そこで、単純に検索ワードが含まれればヒットする緩い LIKE 検索にする方法をご紹介します。

Craft CMS Logo

Craft CMS のエントリー一覧の上にあるキーワード検索は、入力しながらサクッと候補が絞り込まれる ほぼ インクリメンタルサーチなので便利です。しかし、デフォルトの挙動だと、単語の途中ではヒットしません。

つまり、例えば tinybeans.net というのを探しているとして、 tiny まで入力しただけではヒットせず、 tinybeans まで入力しないとヒットしません。これって、スペルが tinybeans と分かっていれば問題ありませんが、 tinybeens とか tinnybearns とか記憶が曖昧だった場合は、とても探しにくいですよね。

これを解消するには、 *tin* のように *(アスタリクス) を前方、後方、または前後両方につけて検索すればヒットするようになります。

しかし、いちいちアスタリクスを入力するのも面倒です。その場合、下記のように general.php に設定を追加すれば、デフォルトの挙動を * を付けたのと同じようにすることができます。

'defaultSearchTermOptions' => array(
 'subLeft' => true,
 'subRight' => true,
),

ちなみに、テンプレート側の検索もこれと同じことができますので、興味があれば下記の記事をご覧ください。

今回も @bunさん にアドバイスいただきました。いつもありがとうございます!

以上です。

Published 2017-10-19
Updated 2019-06-25