Vtiger CRM 的菜单设计为动态的,并且保存在数据库当中,很容易实现权限管理。
下面为在vtiger crm 5.2.1 上实现的菜单自定义的方法:
菜单定义后台数据库表主要为3个:
vtiger_tab —所有下拉子菜单信息
vtiger_parenttab —主菜单列表
vtiger_parenttabrel—-主菜单包含的子菜单列表
所有主菜单和子菜单尽在其中矣。
CREATE TABLE `vtiger_tab` (
`tabid` int(19) NOT NULL DEFAULT ‘0’,
`name` varchar(25) NOT NULL,
`presence` int(19) NOT NULL DEFAULT ‘1’,
`tabsequence` int(10) DEFAULT NULL,
`tablabel` varchar(25) NOT NULL,
`modifiedby` int(19) DEFAULT NULL,
`modifiedtime` int(19) DEFAULT NULL,
`customized` int(19) DEFAULT NULL,
`ownedby` int(19) DEFAULT NULL,
`isentitytype` int(11) NOT NULL DEFAULT ‘1’,
`version` varchar(10) DEFAULT NULL,
PRIMARY KEY (`tabid`),
UNIQUE KEY `tab_name_idx` (`name`),
KEY `tab_modifiedby_idx` (`modifiedby`),
KEY `tab_tabid_idx` (`tabid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
CREATE TABLE `vtiger_tab` (
`tabid` int(19) NOT NULL DEFAULT ‘0’, ——————–菜单ID
`name` varchar(25) NOT NULL, ———菜单名字
`presence` int(19) NOT NULL DEFAULT ‘1’,1-屏蔽,0-显示,2–暂时未知
`tabsequence` int(10) DEFAULT NULL,———–tab 顺序
`tablabel` varchar(25) NOT NULL, ———–在界面显示的文字
`modifiedby` int(19) DEFAULT NULL,
`modifiedtime` int(19) DEFAULT NULL,
`customized` int(19) DEFAULT NULL,
`ownedby` int(19) DEFAULT NULL,
`isentitytype` int(11) NOT NULL DEFAULT ‘1’,
`version` varchar(10) DEFAULT NULL,
PRIMARY KEY (`tabid`),
UNIQUE KEY `tab_name_idx` (`name`),
KEY `tab_modifiedby_idx` (`modifiedby`),
KEY `tab_tabid_idx` (`tabid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
系统登陆后系统为通过下面的sql 语句来获取所有菜单的列表信息的:
select name,tablabel,parenttab_label,vtiger_tab.tabid from vtiger_parenttabrel inner join vtiger_tab on vtiger_parenttabrel.tabid = vtiger_tab.tabid inner join vtiger_parenttab on vtiger_parenttabrel.parenttabid = vtiger_parenttab.parenttabid and vtiger_tab.presence in (0,2) order by vtiger_parenttab.sequence, vtiger_parenttabrel.sequence
以下为以添加一个自定义菜单列为例子:
编辑根目录下的文件:
parent_tadata.php
$parent_tab_info_array=array(1=>'My Home Page',2=>'Customer Info',3=>'Sales',4=>'Support',5=>'Analytics',6=>'Inventory',7=>'Tools',8=>'Settings',10=>'my_add');
$parent_child_tab_rel_array=array(1=>array(3,9,),2=>array(6,4,7,9,),3=>array(7,6,4,9,),4=>array(15,6,4,9,),5=>array(25,1,),6=>array(),7=>array(30,),8=>array(),10=>array(9,));
后面的my_add 为我新添加进去的。
在数据库表vtiger_parenttab,添加一条记录:
11,”my_add”,11,0
添加一条记录到vtiger_parenttabrel
11,9,11
意思为该菜单下包含一个calander 的菜单列表tabid 为9
可以在表vtiger_tab中看到。
可以执行上面提到的sql 语句检查,可以找到新的定义菜单了。
修改include 下的语言定义文件,否则菜单 会显示为空,不能正常显示:
include/language/en_us.lang.php
‘my_add’ => ‘My Add define’,
到此,自定义的菜单项目就已经完成了。