错字3:如何删除页面上的空段落

时间:2013-12-18 23:46:10

标签: html formatting typo3 paragraphs

我正在使用Typo3 v6.1来创建“text”类型的标准页面。在视图中,Typo3在富文本编辑器上创建的内容之前和之后添加了四个空段落。

<p class="bodytext">&nbsp;</p>
<p class="bodytext">    <!--  CONTENT ELEMENT, uid:17/text [begin] --></p>
<p class="bodytext">        <a id="c17"></a></p>
<p class="bodytext">        <!--  Text: [begin] --></p>    

<p class="bodytext">The actual text added using the Rich Text Editor</p>    

<p class="bodytext">        <!--  Text: [end] --></p>
<p class="bodytext">&nbsp;</p>
<p class="bodytext">    <!--  CONTENT ELEMENT, uid:17/text [end] --></p>
<p class="bodytext">&nbsp;</p>  

毋庸置疑,我想摆脱这种混乱,特别是因为&nbsp;打破了布局。

7 个答案:

答案 0 :(得分:8)

有一个parseFunc&lt; lib.parseFunc_RTE在错误的地方。

看起来你有像

这样的东西
page.10 = CONTENT
page.10.stdWrap.parseFunc < lib.parseFunc_RTE

这意味着:呈现内容,然后使用lib.parseFunc_RTE解析此内容。激活包装的代码是

lib.parseFunc_RTE.nonTypoTagStdWrap.encapsLines.wrapNonWrappedLines = <p>|</p>

删除不会解决这里的问题,因为原因是,lib.parseFunc_RTE是在整个内容元素上处理的,而不仅仅是在应该定义它的bodytext上。

查看您的TypoScript或将其添加到您的问题中。

用于测试目的:

在顶层创建一个新网站,并仅添加基本的TypoScript(添加css_styled_content模板;检查清除设置和常量)

page = PAGE
page.10 < styles.content.get

检查输出,内容不应再包含在 p class =“bodytext”中。

<强>更新

使用{content},其中{content}通过styles.content.get f.e填充。 parseFunc执行两次。 styles.content.get执行了parseFunc,因此可以输出到浏览器。但是f:format.html也执行了lib.parseFunc。所以,这就是为什么你的内容被解析了两次。

# in this case, f:format.html does not need to execute the parseFunc again
<f:format.html  parseFuncTSPath="">{content}</f:format.html>

如果您有RTE字段,请使用lib.parseFunc_RTE,如果您不希望字段中的HTML-Code(f.e. header),请使用lib.parseFunc。

答案 1 :(得分:4)

在root

的模板脚本中添加以下行

常数:

content.RTE_compliant = 0

在设置中:

tt_content.stdWrap.dataWrap >
lib.parseFunc_RTE.nonTypoTagStdWrap.encapsLines>

答案 2 :(得分:1)

这是对帖子中描述的问题的变体的解决方案。

<f:format.html>
   {field.copyrightText}
</f:format.html>

在预期段落之前和之后给出一个段落

<f:format.html>{field.copyrightText}</f:format.html>

没有给你额外的段落。因此,模板中的中断似乎由格式viewHelper解析。

希望这有助于某人;祝你有个美好的一天

答案 3 :(得分:0)

我做了一些研究,偶然发现了遇到同样问题的人。 div标记和注释是所谓的“CSS样式内容”的结果。这个内容使用content < styles.content.get传递给前端,根据我的流体模板教程 - 将内容从RTE传递到模板的常用方法。

一个网站将这些描述为解决方案(或解决方法):

# standard enclosure for header
lib.stdheader.10.1.fontTag = <h1>|</h1>    

# remove .csc-header
lib.stdheader.stdWrap.dataWrap >    

# plain headings
lib.stdheader.2.headerStyle >
lib.stdheader.3.headerClass >    

# (unknown, german version read "remove other stuff"
tt_content.stdWrap.dataWrap =    

# disable .bodytext in RTE paragraphs
lib.parseFunc_RTE.nonTypoTagStdWrap.encapsLines.addAttributes.P.class >    

# disable paragraph-enclosure for these tags
lib.parseFunc_RTE.nonTypoTagStdWrap.encapsLines.encapsTagList = cite, div, p, pre, hr, h1, h2, h3, h4, h5, h6,table,tr,td    

# remove paragraphs in tables
#lib.parseFunc_RTE.externalBlocks.table.stdWrap.HTMLparser.removeTags = p    

# allow classes in tables
lib.parseFunc_RTE.externalBlocks.table.stdWrap.HTMLparser.tags.table.fixAttrib.class.list >

警告:我不能代表此解决方法的质量。它确实解决了大多数问题(删除了div,注释和类),但p标签仍然存在。

答案 4 :(得分:-1)

以下是我的工作,我在设置中添加了以下行。

config.disablePrefixComment = 1

答案 5 :(得分:-1)

可以通过删除format.html标记

中的换行符/空格来更正

不正确:

<f:format.html>{data_item.tx_mask_content_rte} </f:format.html>

正确 <f:format.html>{data_item.tx_mask_content_rte}</f:format.html>

同样适用于<f:format.date>,其中包含换行符/空格可能会导致致命错误。

流体imho再次处理得不好。

希望有所帮助

答案 6 :(得分:-5)

请将此代码添加到正文标记的末尾

<script>
   var elems = document.getElementsByTagName('p');
   var elemsLenght = elems.length;
   for (var i = 0; i < elemsLenght; ++i) {
       if (elems[i].innerHTML == '' || elems[i].innerHTML == ' ' || >elems[i].innerHTML == '&nbsp;')
      { 
          elems[i].innerHTML="";
          elems[i].className="";
      }
    }
 </script>