直接前进 - 我希望在后端管理中创建自定义模块菜单组:
我有很多插件,它们可以作为模块使用,而且大多数插件都在WEB组下,而且它会让人感到困惑。我希望创建一个自定义组,如" COMPANY TOOLS"或者" FRONTEND OPTIONS"。
我如何在TYPO3中执行此操作?如何创建自定义模块菜单子组?
PS:我目前正在使用TYPO3 7.6.17,但在修复插件问题后会更新为8。
编辑:将组参数设置为新参数时,只会将其添加到空白组:
答案 0 :(得分:3)
看看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',
]
);
}
根据我的示例调整名称:
您需要将以下文件添加到您的扩展程序:
答案 1 :(得分:1)
您可以使用扩展程序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版本中有一些遗产。
答案 2 :(得分:1)
您需要像子模块一样配置主模块,但配置较短的配置数组:
\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中的同样问题。