TYPO3 7.6的rtehtmlarea富文本编辑器不显示已保存内容求临时方案
TYPO3 7.6 rtehtmlarea编辑器显示异常临时解决办法
问题描述
在TYPO3 7.6版本中,rtehtmlarea富文本编辑器无法正常显示已保存内容,反而输出以下代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html><head></head><body></body></html>
该问题影响Chrome、Safari、Edge、Opera的最新版本,仅Firefox能正常显示内容,且网站暂无升级预算。
临时解决办法
1. 修改RTE TypoScript配置,过滤多余标签
在模板的Setup部分添加以下TypoScript,强制编辑器过滤掉自动生成的完整HTML结构标签:
RTE.default { proc { entryHTMLparser_db = 1 entryHTMLparser_db { allowTags < RTE.default.proc.allowTags dontRemoveUnknownTags = 0 tags.HTML > tags.BODY > tags.HEAD > tags.DOCTYPE > } exitHTMLparser_db = 1 exitHTMLparser_db { allowTags < RTE.default.proc.allowTags dontRemoveUnknownTags = 0 tags.HTML > tags.BODY > tags.HEAD > tags.DOCTYPE > } } }
此配置会在内容存入数据库和从数据库读取时,移除DOCTYPE、html、head、body等外层标签。
2. 修改rtehtmlarea核心JS逻辑
找到typo3conf/ext/rtehtmlarea/Resources/Public/JavaScript/rtehtmlarea.js文件,定位到自动添加文档结构的代码段,注释掉相关逻辑(例如生成DOCTYPE、html/body标签的部分)。修改前请做好文件备份,避免小版本更新覆盖修改内容。
3. 前端JS临时清理内容
若无法修改后端配置,可在全局JS文件中添加以下代码,页面加载后自动清理编辑器输出的多余标签:
document.addEventListener('DOMContentLoaded', () => { document.querySelectorAll('.rtehtmlarea').forEach(el => { el.innerHTML = el.innerHTML.replace(/<!DOCTYPE[^>]*>|<html[^>]*>|<head[^>]*>|<\/head>|<body[^>]*>|<\/body>|<\/html>/gi, ''); }); });
4. 切换兼容编辑器(可选)
如果上述方法无效,可尝试切换到TYPO3 7.6兼容的旧版CKEditor扩展(rteckeditor),或寻找支持该版本的轻量第三方RTE扩展替代rtehtmlarea。
内容的提问来源于stack exchange,提问作者god_is_love
相关产品推荐
相关产品推荐

