简介:Zurmo的很多功能都是通过配置的形式来完成,有
- 全局的配置(metadata)
- 每个模块独立的配置(metadata)
全局配置的一些功能体现在,顶部的导航行,最左边的导航行等等,这些都是公共的部分。此外还有一些其他的功能,这里就不一一列举了。模块独立的配置是针对模块内部的配置,每个模块的样式,功能都可以根据配置的参数来改变。接下来介绍全局的配置
。
二:Zurmo
读取数据顺序
1:系统安装时候的顺序:
读取代码配置 --> 存入数据库 --> 缓存
2:以后系统运行的时候顺序:
缓存 --> 数据库 --> 代码配置
详解第一点:
Zurmo
安装的时候,会从一些代码配置文件读取配置,比如 zurmo/app/protected/modules/zurmo/ZurmoModule.php
文件,代码如下。
public static function getDefaultMetadata()
{
$metadata = array();
$metadata['global'] = array(
'configureMenuItems' => array(
array(
'category' => ZurmoModule::ADMINISTRATION_CATEGORY_GENERAL,
'titleLabel' => "eval:Zurmo::t('ZurmoModule', 'Global Configuration')",
'descriptionLabel' => "eval:Zurmo::t('ZurmoModule', 'Manage Global Configuration')",
'route' => '/zurmo/default/configurationEdit',
'right' => self::RIGHT_ACCESS_GLOBAL_CONFIGURATION,
),
array(
'category' => ZurmoModule::ADMINISTRATION_CATEGORY_GENERAL,
'titleLabel' => "eval:Zurmo::t('ZurmoModule', 'Currency Configuration')",
'descriptionLabel' => "eval:Zurmo::t('ZurmoModule', 'Manage Currency Configuration')",
'route' => '/zurmo/currency/configurationList',
'right' => self::RIGHT_ACCESS_CURRENCY_CONFIGURATION,
),
array(
'category' => ZurmoModule::ADMINISTRATION_CATEGORY_GENERAL,
'titleLabel' => "eval:Zurmo::t('Core', 'Languages')",
'descriptionLabel' => "eval:Zurmo::t('ZurmoModule', 'Manage Active Languages')",
'route' => '/zurmo/language/configurationList',
'right' => self::RIGHT_ACCESS_GLOBAL_CONFIGURATION,
),
array(
'category' => ZurmoModule::ADMINISTRATION_CATEGORY_GENERAL,
'titleLabel' => "eval:Zurmo::t('ZurmoModule', 'Developer Tools')",
'descriptionLabel' => "eval:Zurmo::t('ZurmoModule', 'Access Developer Tools')",
'route' => '/zurmo/development/',
'right' => self::RIGHT_ACCESS_GLOBAL_CONFIGURATION,
),
array(
'category' => ZurmoModule::ADMINISTRATION_CATEGORY_GENERAL,
'titleLabel' => "eval:Zurmo::t('ZurmoModule', 'Authentication Configuration')",
'descriptionLabel' => "eval:Zurmo::t('ZurmoModule', 'Manage Authentication Configuration')",
'route' => '/zurmo/authentication/configurationEdit',
'right' => self::RIGHT_ACCESS_GLOBAL_CONFIGURATION,
),
array(
'category' => ZurmoModule::ADMINISTRATION_CATEGORY_GENERAL,
'titleLabel' => "eval:Zurmo::t('ZurmoModule', 'Plugins')",
'descriptionLabel' => "eval:Zurmo::t('ZurmoModule', 'Manage Plugins and Integrations')",
'route' => '/zurmo/plugins/configurationEdit',
'right' => self::RIGHT_ACCESS_GLOBAL_CONFIGURATION,
),
array(
'category' => ZurmoModule::ADMINISTRATION_CATEGORY_GENERAL,
'titleLabel' => "eval:Zurmo::t('ZurmoModule', 'User Interface Configuration')",
'descriptionLabel' => "eval:Zurmo::t('ZurmoModule', 'Manage User Interface Configuration')",
'route' => '/zurmo/default/userInterfaceConfigurationEdit',
'right' => self::RIGHT_ACCESS_GLOBAL_CONFIGURATION,
),
array(
'category' => ZurmoModule::ADMINISTRATION_CATEGORY_GENERAL,
'titleLabel' => "eval:Zurmo::t('ZurmoModule', 'System Configuration')",
'descriptionLabel' => "eval:Zurmo::t('ZurmoModule', 'Manage System Configuration')",
'route' => '/zurmo/default/systemConfigurationEdit',
'right' => self::RIGHT_ACCESS_GLOBAL_CONFIGURATION,
),
),
'headerMenuItems' => array(
array(
'label' => "eval:Zurmo::t('ZurmoModule', 'Administration')",
'url' => array('/configuration'),
'right' => self::RIGHT_ACCESS_ADMINISTRATION,
'order' => 1,
'mobile' => false,
),
array(
'label' => "eval:Zurmo::t('ZurmoModule', 'Get More')",
'url' => 'eval:ZurmoModule::resolveGetMoreUrl()',
'order' => 9,
'mobile' => true,
),
array(
'label' => "eval:Zurmo::t('ZurmoModule', 'About Zurmo')",
'url' => array('/zurmo/default/about'),
'order' => 10,
'mobile' => true,
),
),
'configureSubMenuItems' => array(
array(
'category' => self::ADMINISTRATION_CATEGORY_AUTHENTICATION,
'titleLabel' => "eval:Zurmo::t('ZurmoModule', 'LDAP Configuration')",
'descriptionLabel' => "eval:Zurmo::t('ZurmoModule', 'Manage LDAP Authentication')",
'route' => '/zurmo/ldap/configurationEditLdap',
'right' => self::RIGHT_ACCESS_GLOBAL_CONFIGURATION,
),
),
'adminTabMenuItemsModuleOrdering' => array(
'home',
'configuration',
'designer',
'import',
'groups',
'users',
'roles',
'workflows',
'contactWebForms'
),
'tabMenuItemsModuleOrdering' => array(
'home',
'mashableInbox',
'accounts',
'leads',
'contacts',
'opportunities',
'marketing',
'projects',
'products',
'reports',
)
);
return $metadata;
}
之后会把这些配置信息存入到数据库的一个名叫 globalmetadata
的表。配置以序列化的形式存入 serializedmetadata
字段中,我们可以选取 一条 classname
的值为 ZurmoModule
的序列化值解序列出来看看。就可以发现ZurmoModule
的配置是其中的一部分,还有一部分是从其他地方读取。之后会存入缓存
中。
PS:有时候可能会出现你改了这里的配置,但是页面却没有改变。
- 原因就是以后系统是先读缓存。有时候清除了缓存,但是页面还是没有发生变化,
- 那是因为之后是读取数据库的数据的,如果你把数据库的对应数据删除了,再刷新页面。有可能会报错
- 因为这个时候你没有把配置存入数据库中。要先执行
Update Custom Data
操作,这个操作的本质就是把配置存入globalmetadata
表中。之后再刷新页面,页面就发生改变了。
上面的注解就是第二点的以后系统运行的时候读取数据的顺序了。
三:清除缓存 和 Update Custom Data
的操作
具体步骤看我在CSDN的文章,这两点的重要性我也在博客写了。很多时候的操作与这两步密切相关。
四:getDefaultMetadata()
方法 metadata['global']
数组中的部分配置参数:
configureMenuItems
headerMenuItems
configureSubMenuItems
adminTabMenuItemsModuleOrdering
tabMenuItemsModuleOrdering
headerMenuItems
参数对应的页面上:
adminTabMenuItemsModuleOrdering
参数对应的页面上:
tabMenuItemsModuleOrdering
参数对应的页面上:
还有部分的参数的位置迟点再补上。
如有不对,请指正!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。