SugarCRMネタ。
管理 > グローバル検索からグローバル検索を有効化するモジュールを選択することが
できるが、そもそもこのリストに出てきていないモジュールがある!
このあたりが結構厄介だが、グローバル検索可能モジュールをどのように判定しているかまとめてみた。
グローバル検索有効・無効配列はダミー
管理画面からいじると、どのモジュールを有効、無効にするか配列が生成されるけど、これはダミー。ここに定義したからといって有効になるわけではない。
vardefsがポイント
実際のところは、vardefsのフィールド定義のunified_searchプロパティで判断している。
このunified_searchがtrueのフィールドが1つでもあると、そのモジュールはグローバル検索可能モジュールとしてリストされるようになる。
なので、作ったモジュールがリストされないなぁと思ったらフィールド定義のunified_searchをtrueにするだけでよい。
グローバル検索有効化までの手順
- 有効化したいモジュールのvardefsの
unified_searchがtrueになっていることを確認する。
なってないなかったらtrueに設定する。ここがtrueになっていなかったら全く無効。 - グローバル検索対象としたいフィールド定義の
unified_searchをtrueにする。 - リペア
- グローバル検索対象モジュールのリストはキャッシュされているので、cache/modules/unified_search_modules.phpを削除する。
管理 > グローバル検索でリストされているのを確認!- あとは煮るなり焼くなり
全文検索エンジンがないと、グローバル検索は各モジュールを部分一致で検索するようになっている。多分。パフォーマンスに直結するため、どのフィールドを対象にするかというのをユーザーにはスタジオから手軽に設定できないようになっているのがキモ。
searchFieldsもポイント(追記)
unified_search => trueにしたからOKと思ったら、SearchFieldsに定義されているものしかグローバル検索対象にならない。注意されたし。