如何阻止TYPO3从RTE内容中剥离<p>标签(或完全触摸它)</p>

时间:2014-01-28 18:46:17

标签: typo3 typoscript

我有一个TYPO3,它会在我为相关字段启用RTE编辑器之前从我创建的内容中删除任何<p>标记,然后将其保存到数据库中。似乎我找不到用TypoScript禁用此行为的方法。一旦我禁用RTE编辑器,我就可以保存<p>个标签,并在前端正确呈现它们。当我直接将它们直接添加到bodytext字段的tt_content表中的数据库中时,它们也会在前端正确呈现。 当我切换到RTE的编辑源模式时,我会看到所有<p>个标签。在保存之前和之后(也就是它们永远不会进入数据库)所以看起来它们会转换为(linux)换行符,并在编辑器在后端加载时转换回<p>标签。但是那些换行当然对前端没有影响。

我认为这种行为会由RTE.default.proc控制,但是那些对我来说都很好看(p已经在允许的标签中,并且不知道为什么它可以被剥离)。我还尝试禁用RTE.default.proc.entryHTMLparser_dbRTE.default.proc.exitHTMLparser_db,因为我不介意,如果您在RTE的编辑源模式中看到HTML内容(因此仍然启用了RTE!)根本不会被触及 - 实际上我更喜欢它 - 但这没有任何效果。另一方面,当我将标签添加到之前不存在的允许标签时(例如<button>),这样就可以了解我尝试添加到RTE.default.proc的内容一般不会被忽略。

那么我如何阻止TYPO3从RTE内容中剥离<p>标签或完全触摸它?我更喜欢使用TypoScript的解决方案,但同时我也会对sys扩展中的丑陋黑客感到高兴,只要它有效......

2 个答案:

答案 0 :(得分:1)

我不确定这是否是一个错误,但问题的解决方案在于p.rmTagIfNoAttrib = 1。至少在我的TYPO3版本(v6.1.7和几乎只有内置扩展)中,我无法在页面的预设TypoScript或RTE编辑器中找到此设置,所以我猜它默认为0。我的逻辑0表示false所以我会说默认会读为“如果没有属性则删除标记?:不!”。

然而,TYPO3似乎按照自己的逻辑运作。将以下语句添加到页面TS可解决我的问题并保留<p>标记:

RTE.default.proc {
    entryHTMLparser_db {
        tags {
            p.rmTagIfNoAttrib = 1
        }
    }
}

答案 1 :(得分:0)

此行为的原因are explained in the TYPO3 manual

  

在TYPO3后端中来回执行的许多转换可以追溯到将RTE合并到浏览器中的挑战。然后有时需要回退一个简单的<textarea> ,其中富文本必须以足够简单的方式呈现,以便编辑可以在没有视觉帮助的情况下使用它。