创建新的TYPO3后端模块菜单组

时间:2017-04-19 06:51:29

标签: php typo3 typo3-7.6.x

直接前进 - 我希望在后端管理中创建自定义模块菜单组:

enter image description here

我有很多插件,它们可以作为模块使用,而且大多数插件都在WEB组下,而且它会让人感到困惑。我希望创建一个自定义组,如" COMPANY TOOLS"或者" FRONTEND OPTIONS"。

我如何在TYPO3中执行此操作?如何创建自定义模块菜单子组?

PS:我目前正在使用TYPO3 7.6.17,但在修复插件问题后会更新为8。

编辑:将组参数设置为新参数时,只会将其添加到空白组:

enter image description here

3 个答案:

答案 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',
        ]
    );
}

根据我的示例调整名称:

  • myextension_xyz ...您的分机名称(分机号码)
  • xyz ...一个简短的名称,与您的扩展名相比
  • 供应商......您的供应商名称
  • Mymodulename ...为您的模块命名(fx。'管理')
  • MyControllerOne,MyControllerTwo ...您的后端控制器类

您需要将以下文件添加到您的扩展程序:

  • ../资源/私人/语言/ locallang_module.xlf
  • ../资源/私人/语言/ locallang_module_mymodulename.xlf
  • ../资源/公共/图标/模块xyz.svg
  • ../资源/公共/图标/模块-XYZ-mymodulename.svg

答案 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_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版本中有一些遗产。

答案 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中的同样问题。