Борьба с фильтром переноса строк

Главные вкладки

Аватар пользователя neochief neochief 14 февраля 2009 в 23:17

При составлении контента очень удобно использовать стандартный фильтр переноса строк и параграфоф. Однако, если требуется использовать экзотические HTML тэги, фильтр переноса может поломать валидный HTML код некорректной вставкой параграфов.

Проблему можно решить в лоб, использовав формат ввода без переноса строк. Но есть еще один обход проблемы. Друпаловский фильтр переноса обходит стороной теги <pre>. Если вставить сложный кусок текста внутрь этого тега, его HTML разметка останется прежней.

Казалось бы — вот оно, решение. Но тэг <pre> был задуман для того, чтобы его внутренности выглядели точно так, как были введены. Т.е. переводы строки остаются переводами строки, а не пробелами. Все это можно отключить используя CSS:

pre.noformat{
white-space:normal;
}

После этого, куски проблемного текста вводятся так:

<pre class="noformat">
<p>текст-текст</p>
<blockquote>
  <p>Текст-текст-текст</p>
  <div class="some class">Еще текст <div>и еще немного</div></div>
</blockquote>
</pre>

Не забывайте, что внутри такого блока параграфы надо будет расставлять вручную.

Для тех, кто не знает откуда статья Wink

Комментарии

Аватар пользователя seaji seaji 15 февраля 2009 в 12:27

"neochief" wrote:
Не забывайте, что внутри такого блока параграфы надо будет расставлять вручную.

Нет, не нужно расставлять параграфы т.к. текст выводится так как был введен.
Если вы один раз нажали enter, то будет как бы [br] только без тега.
Если вы два раза нажали enter, то будет как бы [p] только без тега.

Аватар пользователя seaji seaji 15 февраля 2009 в 18:49

Это все понятно. Я имею ввиду, что браузеры воспринимают pre таким образом, что если в текстовом поле вы переносите каретку на новую строку, то это так и будет отображено на странице. Вот именно по этому и не нужно ставить [br] и [p]

Аватар пользователя seaji seaji 16 февраля 2009 в 10:40

"neochief" wrote:
white-space:normal

Да нет же. white-space:normal отвечает только за переносимость пробелов. Короче, пробелы начинают переноситься.
Все остальное как было так и остается, включая табуляцию, доп. пробелы, переносы строк. Все это отображается.