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に定義されているものしかグローバル検索対象にならない。注意されたし。