创建新的 TYPO3 后端模块菜单组
Create new TYPO3 backend module menu group
直截了当 - 我想在后端管理中创建一个自定义模块菜单组:
我有很多插件,它们作为模块工作,而且大多数插件都在 WEB 组下,而且越来越混乱。我想创建一个自定义组,例如 "COMPANY TOOLS" 或 "FRONTEND OPTIONS"。
我如何在 TYPO3 中执行此操作?如何创建自定义模块菜单子组?
PS:我目前使用的是 TYPO3 7.6.17,但一旦我修复了插件问题,就会更新到 8。
编辑: 将组参数设置为新组时,它只会将其添加到空白组中:
您可以在扩展程序中使用以下代码执行此操作 ext_tables.php
。
<?php
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addModule(
'yourcustomnewmodulename',
'',
'',
'',
[
'labels' => 'LLL:EXT:'.$_EXTKEY.'/Resources/Private/Language/Backend/MainModule.xlf',
// See: https://docs.typo3.org/typo3cms/CoreApiReference/ApiOverview/Icon/Index.html
'iconIdentifier' => 'your-registred-icon-from-IconRegistry'
]
);
现在您可以使用密钥 yourcustomnewmodulename
而不是 web
来使用这个新的主模块。
MainModule.xlf 应该包含键; mlang_labels_tablabel
、mlang_labels_tabdescr
和 mlang_tabs_tab
。示例如下:
<?xml version="1.0" encoding="UTF-8"?>
<xliff version="1.0">
<file source-language="en" datatype="plaintext" original="messages" date="2012-10-17T19:30:32Z" product-name="extbase">
<header/>
<body>
<trans-unit id="mlang_tabs_tab" xml:space="preserve">
<source>Company Tools</source>
</trans-unit>
<trans-unit id="mlang_labels_tabdescr" xml:space="preserve">
<source>Description used for about screen, what does the extension do?</source>
</trans-unit>
<trans-unit id="mlang_labels_tablabel" xml:space="preserve">
<source>Company Tools</source>
</trans-unit>
</body>
</file>
</xliff>
ps。如果你想看实时版本,我在 EXT:my_user_management
here 中做了类似的功能,但对 6.2 有一些遗留。
看看EXT:direct_mail。我建议最好这样做。
这里有一个示例,您需要修改并插入 ext_tables.php 配置文件:
/**
* Icon registry
*/
// Add a bunch of icons to icon registry
$iconIdentifiers = [
'module-xyz',
'module-xyz-mymodulename',
];
$iconRegistry = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Core\Imaging\IconRegistry::class);
foreach ($iconIdentifiers as $iconIdentifier) {
$iconRegistry->registerIcon(
$iconIdentifier,
\TYPO3\CMS\Core\Imaging\IconProvider\SvgIconProvider::class,
['source' => 'EXT:myextension_xyz/Resources/Public/Icons/' . $iconIdentifier . '.svg']
);
}
/**
* BE-module
*/
if (TYPO3_MODE === 'BE') {
// Add module 'xyz' after 'Web'
if (!isset($GLOBALS['TBE_MODULES']['xyz'])) {
$temp_TBE_MODULES = [];
foreach ($GLOBALS['TBE_MODULES'] as $key => $val) {
if ($key == 'web') {
$temp_TBE_MODULES[$key] = $val;
$temp_TBE_MODULES['xyz'] = '';
} else {
$temp_TBE_MODULES[$key] = $val;
}
}
$GLOBALS['TBE_MODULES'] = $temp_TBE_MODULES;
$GLOBALS['TBE_MODULES']['_configuration']['xyz'] = [
'labels' => 'LLL:EXT:myextension_xyz/Resources/Private/Language/locallang_module.xlf',
'name' => 'xyz',
'iconIdentifier' => 'module-xyz'
];
}
// Register module
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerModule(
'Vendor.myextension_xyz',
'xyz',
'Mymodulename',
'bottom',
[
'MyControllerOne' => 'list, show, new, create, edit, update, delete',
'MyControllerTwo' => 'list, show, new, create, edit, update, delete',
],
[
'access' => 'user,group',
'icon' => 'EXT:myextension_xyz/Resources/Public/Icons/module-xyz-mymodulename.svg',
'labels' => 'LLL:EXT:myextension_xyz/Resources/Private/Language/locallang_module_mymodulename.xlf',
]
);
}
根据我的示例改编名称:
- myextension_xyz ...您的分机名称(分机密钥)
- xyz ... 短名称,与您的分机名称比较
- 供应商...您的供应商名称
- Mymodulename ... 为您的模块命名 (fx.'Management')
- MyControllerOne、MyControllerTwo ...您的后端控制器类
您需要将以下文件添加到您的扩展中:
- ../Resources/Private/Language/locallang_module.xlf
- ../Resources/Private/Language/locallang_module_mymodulename.xlf
- ../Resources/Public/Icons/module-xyz.svg
- ../Resources/Public/Icons/module-xyz-mymodulename.svg
您需要像配置子模块一样配置主模块,但使用更短的配置数组:
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addModule('YourMainModule', '', '', '',
[
'name' => 'YourMainModule',
'labels' => [
'll_ref' => 'LLL:EXT:ext_key/Resources/Private/Language/Modules/locallang_mod.xlf'
]
]
);
locallang_mod.xlf 必须包含索引 mlang_tabs_tab
:
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<xliff version="1.0">
<file source-language="en" datatype="plaintext" original="messages" date="2015-07-30T00:30:29Z"
product-name="extension">
<header/>
<body>
<trans-unit id="mlang_tabs_tab" xml:space="preserve">
<source>Main module title</source>
</trans-unit>
<trans-unit id="mlang_labels_tabdescr" xml:space="preserve">
<source>Main module description</source>
</trans-unit>
</body>
</file>
</xliff>
希望它对你有用。刚刚用这段代码修复了 l10nmgr 中的相同问题。
直截了当 - 我想在后端管理中创建一个自定义模块菜单组:
我有很多插件,它们作为模块工作,而且大多数插件都在 WEB 组下,而且越来越混乱。我想创建一个自定义组,例如 "COMPANY TOOLS" 或 "FRONTEND OPTIONS"。
我如何在 TYPO3 中执行此操作?如何创建自定义模块菜单子组?
PS:我目前使用的是 TYPO3 7.6.17,但一旦我修复了插件问题,就会更新到 8。
编辑: 将组参数设置为新组时,它只会将其添加到空白组中:
您可以在扩展程序中使用以下代码执行此操作 ext_tables.php
。
<?php
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addModule(
'yourcustomnewmodulename',
'',
'',
'',
[
'labels' => 'LLL:EXT:'.$_EXTKEY.'/Resources/Private/Language/Backend/MainModule.xlf',
// See: https://docs.typo3.org/typo3cms/CoreApiReference/ApiOverview/Icon/Index.html
'iconIdentifier' => 'your-registred-icon-from-IconRegistry'
]
);
现在您可以使用密钥 yourcustomnewmodulename
而不是 web
来使用这个新的主模块。
MainModule.xlf 应该包含键; mlang_labels_tablabel
、mlang_labels_tabdescr
和 mlang_tabs_tab
。示例如下:
<?xml version="1.0" encoding="UTF-8"?>
<xliff version="1.0">
<file source-language="en" datatype="plaintext" original="messages" date="2012-10-17T19:30:32Z" product-name="extbase">
<header/>
<body>
<trans-unit id="mlang_tabs_tab" xml:space="preserve">
<source>Company Tools</source>
</trans-unit>
<trans-unit id="mlang_labels_tabdescr" xml:space="preserve">
<source>Description used for about screen, what does the extension do?</source>
</trans-unit>
<trans-unit id="mlang_labels_tablabel" xml:space="preserve">
<source>Company Tools</source>
</trans-unit>
</body>
</file>
</xliff>
ps。如果你想看实时版本,我在 EXT:my_user_management
here 中做了类似的功能,但对 6.2 有一些遗留。
看看EXT:direct_mail。我建议最好这样做。 这里有一个示例,您需要修改并插入 ext_tables.php 配置文件:
/**
* Icon registry
*/
// Add a bunch of icons to icon registry
$iconIdentifiers = [
'module-xyz',
'module-xyz-mymodulename',
];
$iconRegistry = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Core\Imaging\IconRegistry::class);
foreach ($iconIdentifiers as $iconIdentifier) {
$iconRegistry->registerIcon(
$iconIdentifier,
\TYPO3\CMS\Core\Imaging\IconProvider\SvgIconProvider::class,
['source' => 'EXT:myextension_xyz/Resources/Public/Icons/' . $iconIdentifier . '.svg']
);
}
/**
* BE-module
*/
if (TYPO3_MODE === 'BE') {
// Add module 'xyz' after 'Web'
if (!isset($GLOBALS['TBE_MODULES']['xyz'])) {
$temp_TBE_MODULES = [];
foreach ($GLOBALS['TBE_MODULES'] as $key => $val) {
if ($key == 'web') {
$temp_TBE_MODULES[$key] = $val;
$temp_TBE_MODULES['xyz'] = '';
} else {
$temp_TBE_MODULES[$key] = $val;
}
}
$GLOBALS['TBE_MODULES'] = $temp_TBE_MODULES;
$GLOBALS['TBE_MODULES']['_configuration']['xyz'] = [
'labels' => 'LLL:EXT:myextension_xyz/Resources/Private/Language/locallang_module.xlf',
'name' => 'xyz',
'iconIdentifier' => 'module-xyz'
];
}
// Register module
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerModule(
'Vendor.myextension_xyz',
'xyz',
'Mymodulename',
'bottom',
[
'MyControllerOne' => 'list, show, new, create, edit, update, delete',
'MyControllerTwo' => 'list, show, new, create, edit, update, delete',
],
[
'access' => 'user,group',
'icon' => 'EXT:myextension_xyz/Resources/Public/Icons/module-xyz-mymodulename.svg',
'labels' => 'LLL:EXT:myextension_xyz/Resources/Private/Language/locallang_module_mymodulename.xlf',
]
);
}
根据我的示例改编名称:
- myextension_xyz ...您的分机名称(分机密钥)
- xyz ... 短名称,与您的分机名称比较
- 供应商...您的供应商名称
- Mymodulename ... 为您的模块命名 (fx.'Management')
- MyControllerOne、MyControllerTwo ...您的后端控制器类
您需要将以下文件添加到您的扩展中:
- ../Resources/Private/Language/locallang_module.xlf
- ../Resources/Private/Language/locallang_module_mymodulename.xlf
- ../Resources/Public/Icons/module-xyz.svg
- ../Resources/Public/Icons/module-xyz-mymodulename.svg
您需要像配置子模块一样配置主模块,但使用更短的配置数组:
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addModule('YourMainModule', '', '', '',
[
'name' => 'YourMainModule',
'labels' => [
'll_ref' => 'LLL:EXT:ext_key/Resources/Private/Language/Modules/locallang_mod.xlf'
]
]
);
locallang_mod.xlf 必须包含索引 mlang_tabs_tab
:
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<xliff version="1.0">
<file source-language="en" datatype="plaintext" original="messages" date="2015-07-30T00:30:29Z"
product-name="extension">
<header/>
<body>
<trans-unit id="mlang_tabs_tab" xml:space="preserve">
<source>Main module title</source>
</trans-unit>
<trans-unit id="mlang_labels_tabdescr" xml:space="preserve">
<source>Main module description</source>
</trans-unit>
</body>
</file>
</xliff>
希望它对你有用。刚刚用这段代码修复了 l10nmgr 中的相同问题。