如何在TYPO3 >=v12顶部栏现有帮助下拉按钮中添加菜单项
在TYPO3 v12+顶部帮助菜单添加外链菜单项的实现方法
实现步骤
1. 注册后端事件监听器
在你的扩展目录下的Configuration/Services.yaml中添加以下配置,注册监听顶部栏元素修改的事件:
services: Vendor\YourExtension\EventListener\ModifyHelpMenuListener: tags: - name: event.listener identifier: 'your-extension/modify-help-menu' event: TYPO3\CMS\Backend\Backend\Event\ModifyBackendTopbarItemsEvent
2. 编写事件监听器类
在扩展的Classes/EventListener/目录下创建ModifyHelpMenuListener.php文件,实现具体的菜单添加逻辑:
<?php declare(strict_types=1); namespace Vendor\YourExtension\EventListener; use TYPO3\CMS\Backend\Backend\Event\ModifyBackendTopbarItemsEvent; use TYPO3\CMS\Backend\Toolbar\DropdownItem; use TYPO3\CMS\Core\Imaging\IconFactory; use TYPO3\CMS\Core\Utility\GeneralUtility; class ModifyHelpMenuListener { public function __construct( protected readonly IconFactory $iconFactory ) {} public function __invoke(ModifyBackendTopbarItemsEvent $event): void { // 遍历顶部栏元素,找到标识为"help"的下拉按钮 foreach ($event->getTopbarItems() as $topbarItem) { if ($topbarItem->getIdentifier() === 'help') { // 创建自定义菜单项 $customItem = GeneralUtility::makeInstance(DropdownItem::class) ->setTag('a') ->setHref('https://mysite/whatever') ->setLabel('我的自定义帮助链接') ->setTitle('点击打开自定义帮助页面') ->setIcon($this->iconFactory->getIcon('actions-heart')) ->setTarget('_blank'); // 设置在新标签页打开 // 将菜单项添加到帮助下拉菜单 $topbarItem->addItem($customItem); break; } } } }
关键说明
- 事件选择:使用
ModifyBackendTopbarItemsEvent可以直接操作顶部栏的所有元素,包括已存在的帮助下拉按钮,无需重新创建按钮。 - 定位帮助菜单:通过遍历顶部栏元素,匹配
identifier为help的项,即可获取到已有的帮助下拉按钮实例。 - 新标签页打开:通过
setTarget('_blank')实现外链在新标签页打开,避免编辑离开当前操作上下文。
内容的提问来源于stack exchange,提问作者Sybille Peters
相关产品推荐
相关产品推荐

