Typo3: Как удалить пустые абзацы на странице

Я использую Typo3 v6.1 для создания стандартной страницы типа "текст". В представлении 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; ломают макет.

8 ответов

ParseFunc

Похоже, у вас есть что-то вроде

page.10 = CONTENT
page.10.stdWrap.parseFunc < lib.parseFunc_RTE

Что будет означать: визуализировать содержимое, а затем проанализировать его с помощью lib.parseFunc_RTE. Код, который активирует упаковку

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

Удаление не решило бы проблему здесь, потому что причина в том, что lib.parseFunc_RTE обрабатывается на всем элементе содержимого, а не только на тексте тела, где это должно быть определено.

Загляните в свой TypoScript или добавьте его к своему вопросу.

для целей тестирования:

Создайте новый сайт на верхнем уровне и добавьте только базовый TypoScript (добавьте шаблон css_styled_content; проверьте чистую настройку и константы)

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

Проверьте этот вывод, содержимое больше не должно быть заключено в p class = "bodytext".

Обновить:

Используя {content}, где {content} заполняется через styles.content.get, например, 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>

Используйте lib.parseFunc_RTE, если у вас есть поле RTE, используйте lib.parseFunc, если вы не ожидаете HTML-код в поле (например, заголовок).

Добавить следующие строки в шаблон скрипта root

В константах:

content.RTE_compliant = 0

В настройках:

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

Это решение варианта проблемы, описанного в посте.

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

дает вам один абзац до и после ожидаемого абзаца

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

не дает вам никаких дополнительных пунктов. Таким образом, разрывы в шаблоне, похоже, анализируются в формате viewHelper.

надеюсь, это кому-нибудь поможет; хорошего дня

У меня тоже была эта проблема, иногда это помогало использовать такую ​​настройку:

lib.parseFunc_RTE.nonTypoTagStdWrap.encapsLines>

Но это случилось, что я не мог использовать
в таблицах. Итак, я немного прыгнул внутрь и обнаружил такую ​​возможность:

lib.parseFunc_RTE.nonTypoTagStdWrap.encapsLines.innerStdWrap_all.ifBlank =

Я провел еще несколько исследований и наткнулся на людей, сталкивающихся с той же проблемой. div теги и комментарии являются результатом так называемого "CSS Styled Content". Этот контент передается через интерфейс content < styles.content.get, что, согласно моему учебнику по шаблонам Fluid, является распространенным способом передачи содержимого из 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 теги остались.

Может быть исправлено путем удаления разрывов строк / пробелов внутри тега 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>где разрывы / пробелы могут привести к фатальным ошибкам.

Опять плохо с жидкостью имхо.

Надеюсь, поможет

Вот что сделало для меня эту работу, я добавил следующую строку в мои настройки.

config.disablePrefixComment = 1

Пожалуйста, добавьте этот код над тегом конца тела,

<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>
Другие вопросы по тегам