TYPO3 13.3中CKEditor5文件外包:自定义特殊字符插件失效问题
TYPO3 CKEditor5 自定义特殊字符插件(不修改Vendor)解决方案
问题根源分析
你的配置存在两个核心问题:
- JavaScript模块映射错误:
JavaScriptModules.php中直接将命名空间指向单个JS文件,而非目录,导致模块解析失败 - 未正确覆盖核心插件:核心
SpecialCharacters插件优先级高于自定义模块,需明确替换核心插件引用
正确配置步骤
1. 修正站点包JavaScript模块映射
修改ub_sitepackage/Configuration/JavaScriptModules.php,将命名空间映射到目录(支持子模块解析):
<?php return [ 'dependencies' => ['core', 'backend', 'rte_ckeditor'], 'imports' => [ '@ub/sitepackage/' => 'EXT:ub_sitepackage/Resources/Public/JavaScript/' ], ];
2. 复制并修改核心插件代码
从vendor/typo3/cms-rte-ckeditor/Resources/Public/JavaScript/ckeditor5-plugins/special-characters目录,完整复制所有文件到站点包的Resources/Public/JavaScript/special-characters目录下。
修改special-characters.js添加自定义字符(示例):
// 找到specialCharacters数组,新增自定义分类 const specialCharacters = [ // 保留原有字符分类... { title: '自定义特殊字符', characters: ['✪', '✯', '✰', '❂'] } ];
3. 调整CKEditor预设YAML配置
修改ub_sitepackage/Configuration/RTE/ckeditor-ub.yaml,明确替换核心插件:
editor: config: # 移除核心默认加载的SpecialCharacters插件 removePlugins: - SpecialCharacters # 引入自定义插件模块 importModules: - { module: '@ub/sitepackage/special-characters/special-characters.js' } # 确保插件注册名称与核心一致,关联工具栏按钮 plugins: - SpecialCharacters - SpecialCharactersArrows # 如需保留核心子分类,需同步复制对应文件到站点包 # 保留其他必要插件... toolbar: items: # 保留其他工具栏项... - specialCharacters
4. 缓存清理与验证
- 清除TYPO3所有缓存(包含JavaScript模块缓存)
- 强制刷新浏览器页面(Ctrl+F5)
- 打开RTE编辑器,检查特殊字符面板是否显示自定义字符
关键注意事项
- 自定义插件必须注册与核心完全相同的插件名称(如
SpecialCharacters),确保工具栏按钮能正常关联 - 若需保留核心的子分类(如箭头、货币字符),需同步复制对应子模块文件到站点包并按需修改
- 所有修改仅在站点包内完成,避免核心更新后配置丢失
内容的提问来源于stack exchange,提问作者wini
相关产品推荐
相关产品推荐

