TYPO3扩展如何添加第二个后台导航模块
在TYPO3扩展中添加第二个后台导航模块的解决方案
嘿,我来帮你搞定这个需求!你的现有代码已经在创建自定义模块分类InstitutsShop了,接下来我们用TYPO3官方推荐的方式注册第二个模块,比手动操作TBE_MODULES更规范可靠。
优化模块分类的创建逻辑
首先可以把你现有循环TBE_MODULES的代码简化成更清晰的写法,确保分类插入到web模块之后:
if (TYPO3_MODE === 'BE') { // 定义自定义模块分类的名称 $moduleCategory = 'InstitutsShop'; // 如果分类不存在,就插入到"web"模块之后 if (!isset($TBE_MODULES[$moduleCategory])) { $tbeModulesKeys = array_keys($TBE_MODULES); $webModulePosition = array_search('web', $tbeModulesKeys); // 拆分现有模块数组,插入自定义分类 $tempTbeModules = array_slice($TBE_MODULES, 0, $webModulePosition + 1, true); $tempTbeModules[$moduleCategory] = ''; $tempTbeModules += array_slice($TBE_MODULES, $webModulePosition + 1, null, true); $TBE_MODULES = $tempTbeModules; }
注册第二个后台模块
接下来用ExtensionUtility::registerModule方法注册第二个模块,这个是TYPO3 Extbase扩展的标准做法,支持权限控制、图标、语言标签等配置。在上面的代码后面继续添加:
// 1. 注册第一个现有模块(示例) \TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerModule( 'VendorName.InstitutsShop', // 替换为你的扩展标识(厂商名.扩展key) $moduleCategory, // 所属的自定义模块分类 'main', // 模块唯一标识key '', // 位置:空表示分类下的第一个模块 [ 'Product' => 'list,show,new,create,edit,update,delete', // 这里填写该模块对应的控制器和允许的动作 ], [ 'access' => 'user,group', // 访问权限:普通用户/组可访问 'icon' => 'EXT:instituts_shop/Resources/Public/Icons/module-main.svg', // 模块图标路径 'labels' => 'LLL:EXT:instituts_shop/Resources/Private/Language/locallang_mod_main.xlf', // 语言文件路径 ] ); // 2. 注册第二个后台模块 \TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerModule( 'VendorName.InstitutsShop', $moduleCategory, // 同样归属于自定义分类InstitutsShop 'settings', // 第二个模块的唯一标识key,不能和第一个重复 'after:main', // 位置:放在第一个模块"main"的后面 [ 'Setting' => 'list,show,edit,update', // 第二个模块对应的控制器和动作 ], [ 'access' => 'admin', // 可以设置不同权限,比如仅限管理员访问 'icon' => 'EXT:instituts_shop/Resources/Public/Icons/module-settings.svg', 'labels' => 'LLL:EXT:instituts_shop/Resources/Private/Language/locallang_mod_settings.xlf', ] ); }
关键注意事项
- 替换占位符:把
VendorName换成你的扩展厂商名称,InstitutsShop是你的扩展key,控制器和动作要对应自己的代码逻辑。 - 唯一模块key:每个模块的第三个参数(比如
main、settings)必须唯一,不能重复。 - 语言文件:要确保对应的语言文件存在,里面定义了模块的名称和描述,比如
locallang_mod_settings.xlf里要有module.settings相关的标签。 - 图标文件:准备好模块的SVG图标,放在对应的资源目录下,确保路径正确。
- 权限控制:根据需求调整
access参数,可选值有user,group(普通用户)、admin(仅限管理员)等。
内容的提问来源于stack exchange,提问作者Felix
相关产品推荐
相关产品推荐

