メニュー
出典: SugarForum.jp
目次 |
メニューとは?
ショートカットに表示されるアイテムのことです。「新規作成」や「一覧表示」といった機能へのリンクを提供します。テーマやユーザ設定によって、左側あるいは上部に表示されます。
定義する場所
SugarRoot/modules/@モジュール名/Menu.php
書式
通常版
$module_menu[] = array($url, $link_text, $image_name);
- $url
- リンク先のURL
- $link_text
- 表示されるテキストのラベル。参照:言語ファイル
- $image_name
- アイコンのイメージ名
ACL対応版
if(ACLController::checkAccess($module_name, $view, true)) $module_menu[] = array($url, $link_text, $image_name);
- $module_name
- モジュール名
- $view
- ビューの種類 (edit,list,detailなど)
アップグレードセーフな拡張方法
既存モジュール(例えばContacts)のメニューを変更したい場合、
SugarRoot/custom/modules/@モジュール名/Ext/Menus/menu.ext.php
を作成し、上記の書式でメニューを記述する。
ただし、このままだと既存メニューの下に追加される形になる。既存のメニューを隠したい場合は、ファイルの最初で、
$module_menu = array();
として変数を上書きしておくこと。
動的なメニュー構成
書式のACL対応版の項を見ると分かるように、条件によってメニューの表示をコントロールできます。例えば、現在時刻や曜日、IPアドレス、ユーザIDなどさまざまな条件でメニュー構成を変化させてもOKです。
管理ユーザだけに表示するメニュー
管理者用の隠しコマンドや、スキーマ表示など、一般ユーザに表示したくないメニューは、以下のようにしておくと便利です。(メニューから呼び出されるアクション側でも、同様のチェックを入れておきましょう)
global $current_user; if (is_admin($current_user)) $module_menu[] = array($url, $link_text, $image_name);