创建新的 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_tablabelmlang_labels_tabdescrmlang_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 中的相同问题。