Тип поля: Текст HTML. При отображении удаляются пустые строки. Как отключить удаление?

InstantCMS 2.X
#1 22 января 2022 в 22:16

Коллеги, такой технический вопрос.

Есть поле типа «Текст HTML» (текст страницы, статьи, поста блога и так далее).
В этом тексте иногда нужно добавлять пустые строки, отступы между абзацами.

Я включил редактор HTML для этого поля — Redactor.
В нём просто пустые строки — удаляются при сохранении.
Но если в пустой строке добавить два пробела — то строка уже как бы не пустая, в HTML-режиме там отображаются следующий код:

  1. <p>
  2. &nbsp;&nbsp;
  3. </p>

Данный фрагмент при сохранении статьи — не удаляется.
И в режиме просмотра (не HTML-кода) — в редакторе Redactor тоже отображается визуально корректно.

Но! Именно на самом сайте — данные пустые строки всё равно схлопываются, не отображаются.


Поделитесь мыслями, идеями или готовым решением, как это можно подправить.
Куда копать? :)

Может быть редактор другой взять?
Или может что-то в настройках компонент?
Или в коде движка надо править?

  

P.S.: Ну вот здесь же я могу несколько пустых строк добавить внутри комментария в блоге.

Добавлено спустя 11 минут

UPD: При отключении типографа — указанные строки не схлопываются, не удаляются при отображении на сайте.
Но блин, типограф — тоже вещь прикольная. )

#2 22 января 2022 в 23:02

В нём просто пустые строки — удаляются при сохранении.

Владимир Переверзев

Проверил, у меня они удаляются при переключении режима отображения код/визивиг т.е. это делает редактор еще до сохранения.

#3 23 января 2022 в 00:05

В нём просто пустые строки — удаляются при сохранении.

Владимир Переверзев

Проверил, у меня они удаляются при переключении режима отображения код/визивиг т.е. это делает редактор еще до сохранения.

Sonat

Нет, у меня совершенно по-другому.
Я же очень чётко написал.

Если поставить один пробел — он удалится.
При переключении режима или при сохранении.

А если поставить два пробела — они преобразуются в неудаляемые проблемы и сохраняются.
Я же добавил пример кода.

#4 23 января 2022 в 14:45

Нет, у меня совершенно по-другому.
Я же очень чётко написал.

Владимир Переверзев

Не понял чего там по другому, я написал о том что опытным путем выяснилось что дело в Редакторе.

Может быть редактор другой взять?

Владимир Переверзев

— ДА

Или может что-то в настройках компонент?

Владимир Переверзев

— НЕТ, дело не в компоненте а в редакторе, так что смотреть надо настройки  не компонента а редактора

Или в коде движка надо править?

Владимир Переверзев

— НЕТ

#5 23 января 2022 в 15:18

Нет, у меня совершенно по-другому.
Я же очень чётко написал.

Владимир Переверзев

Не понял чего там по другому, я написал о том что опытным путем выяснилось что дело в Редакторе.

Может быть редактор другой взять?

Владимир Переверзев

— ДА

Или может что-то в настройках компонент?

Владимир Переверзев

— НЕТ, дело не в компоненте а в редакторе, так что смотреть надо настройки  не компонента а редактора

Или в коде движка надо править?

Владимир Переверзев

— НЕТ

Sonat

Давайте с Вами на бутылку хорошего коньяка поспорим, что то, что Вы описали — НИКАК не решает ИМЕННО ту задачу, которую я озвучил? 

Сделаем созвон в Скайпе, включим видеозапись, Вы мне покажете, как Ваши придумки решают НЕ перепридуманный Вами, и именно мой запрос.

Делаем?

— — — — -

Может быть редактор другой взять?
— ДА

Какой именно, давайте чётко.

Или может что-то в настройках компонент?
— НЕТ, дело не в компоненте а в редакторе, так что смотреть надо настройки  не компонента а редактора

Нет, дело точно НЕ в редакторе.
В рекакторе Redactor указанный мной (а не какой-то придуманный Вами) код — не удаляется.
Подчеркну — НЕ удаяется.

Или в коде движка надо править?
— НЕТ

Опишите, пожалуйста, чёткое решение именно МОЕГО запроса.

Ну либо Вы меня простите, но давайте не будем здесь втюхивать непонятно что.
Сами что-то придумали, сами нашли решение непонятно чего.

#6 23 января 2022 в 16:09

Какой именно, давайте чётко.

Владимир Переверзев

Опишите, пожалуйста, чёткое решение именно МОЕГО запроса.

Владимир Переверзев

но давайте не будем здесь втюхивать непонятно что.
Сами что-то придумали, сами нашли решение непонятно чего.

Владимир Переверзев

Володя, вам тут кто-то что-то должен? По-моему — нет. Хватку ослабь и говори спасибо за помощь, не на работе. Задачи он озвучивает.

instantcms.ru/rules.html

#7 23 января 2022 в 16:23

Давайте с Вами на бутылку хорошего коньяка поспорим, что то, что Вы описали — НИКАК не решает ИМЕННО ту задачу, которую я озвучил? 

Владимир Переверзев

Задача иметь возможность ставить пустые строке в редакторе?


Я вам и так все наглядно распишу...

Допустим надо вставить текст 

1
2

4
5

что в html-коде должно быть примерно как

  1. <p>1</p>
  2. <p>2</p>
  3. <p></p>
  4. <p>4</p>
  5. <p>5</p>

Если эти 5 строк вставить в редактор Redactor, то еще до сохранения (в браузере) это все поправится на 
1
2
4
5
и на сервер отправится (и соответственно сохранится) именно этот чищеный текст, т.е. 4 строки.


Если это же эти 5 строк вставить в редактор Tinymce, то и на сервере они сохранятся в таком же виде — 5 строк.


Второй момент как эти строки будут отображаться — это зависит от типографа.
Если включен типограф, то эти 5 строк (при выводе превратятся в 4)
С выключенным типографом отобразятся все 5 строк

1
2

4
5


Если нам по какой-то причине нужен типограф и отключать его нельзя, то надо лезть в его настройки.

#8 23 января 2022 в 17:12

5 строк вставить в редактор Tinymce

Sonat

А если в него вставить JS код, исполняться будет? Ну или допустим svg картинку содержащую JS код? Redactor всё это безобразие обвернёт в <p></p>, это проверял.

#9 23 января 2022 в 20:06

Если нам по какой-то причине нужен типограф и отключать его нельзя, то надо лезть в его настройки.

Sonat

файл /system/controllers/typograph/hooks/html_filter.php

Ищем метод cfgSetTagIsEmpty 
и добавляем тег p
должно получиться 

  1. $jevix->cfgSetTagIsEmpty([
  2. 'a', 'iframe', 'div', 'p'
  3. ]);

А если в него вставить JS код, исполняться будет? Ну или допустим svg картинку содержащую JS код? Redactor всё это безобразие обвернёт в <p></p>, это проверял.

Panda58dev

Насколько знаю Tinymce тоже все что пишется в редакторе вставляет в параграфы<p></p>, можно ли это как-то обойти вставкой картинки, фрейма или еще чего — мне неизвестно.

#10 23 января 2022 в 20:23

 Владимир Переверзев

Попробуйте добавить контент из другого браузера.

О результатах напишите здесь.

#11 24 января 2022 в 01:47

Какой именно, давайте чётко.

Владимир Переверзев

Опишите, пожалуйста, чёткое решение именно МОЕГО запроса.

Владимир Переверзев

но давайте не будем здесь втюхивать непонятно что.
Сами что-то придумали, сами нашли решение непонятно чего.

Владимир Переверзев

Володя, вам тут кто-то что-то должен? По-моему — нет. Хватку ослабь и говори спасибо за помощь, не на работе. Задачи он озвучивает.

instantcms.ru/rules.html

Fuze

Fuze, замечание принимаю.
Но вот только зачем флудить и писать СОВЕРШЕННО НЕ о том, о чём я спрашивал?

Или может быть в данном форуме тоже приветствуется, когда пользователь наращивает «репутацию» путём ответов невпопад? Если так — как говорят у нас в Одессе, то «я, конечно, извиняюсь».

Добавлено спустя 29 минут

>> Задача иметь возможность ставить пустые строке в редакторе?

Sonat, нет, задача заключается в том, чтобы с помощью редактора иметь возможность вставлять пустые строки ТАК, чтобы они не схлопывались (не удалялись) при последующем ОТОБРАЖЕНИИ.

Дублирую кусок кода, который точно можно легко вставить в Wysiwyg-режиме редактора Redactor и который точно НЕ удаляется при сохранении:

  1. <p>
  2. &nbsp;&nbsp;
  3. </p>


Ещё раз продублирую, как этот код в визивиге можно делать:
1. Делаешь пустые строки.
2. В пустых строках ставишь два пробела.
3. Два пробела автоматически заменяются на два неудаляемых пробела, что и показано на фрагменте кода.
4. При переключении с визуального режима на код и обратно, при сохранении, при последующем редактировании поля — эти два пробела — СОХРАНЯЮТСЯ.
5. Но!
6. При отображении — они таки удаляются.

Вот в чём суть моего запроса и суть проблемы.

— — — — -
 
То есть дело точно НЕ в редакторе, а в отображении данного кода после редактора.
Об этом я писал изначально.

А Вы писали — «нет, я знаю, всё дело в редакторе».
Извините, пожалуйста, но эти ответы я считаю некорректными.

Дело — именно в отображении.
После того, как я опубликовал топик, я протестировал и обнаружил, что дело — в типографе.

Поэтому я добавил апдейт запроса:

UPD: При отключении типографа — указанные строки не схлопываются, не удаляются при отображении на сайте.
Но блин, типограф — тоже вещь прикольная. )

— — — — -

Забегая вперёд, скажу, что Ваши последние ответы (уже после того, как я чуть побухтел) — реально очень полезные конструктивные. Но блин, первые ответы — на мой лично-субъективный взгляд, были ну не в кассу, Вы уж извините, пожалуйста.

Я пытался попуглить информацию о работе типографа в Инстанте, ничего толкового не нашёл.
А Вы очень здорово написали о том, как можно типограф подконфигурировать.

Реально — вот за это огромное спасибо!!

— — — — -

Именно на свой запрос — я уже нашёл относительно простое и удобное решение.

Вариант 1. Можно просто отключить типограф

Но отключать типограф — не очень хороший вариант.
Типограф — гласная штука, заменяет дефисы на тире, заменяет прямые ссылки на редирект (не напрямую, но в опциях настройки полей это связано) и так далее.

Вариант 2. Использовать переносы строк

Если нужно добавить пустые строки, создать вертикальные интервалы между фрагментами — можно использовать не пустые абзацы, а переносы строк. Оказывается, что неудаляемые пробелы типограф удаляет, пустые абзацы тоже, а обычные переносы строк — не удаляет.

Нужны интервалы между блоками текста — ставь не Enter, а Shift+Enter. При определённых настройках в CSS — это не одно и то же. Но вполне простой и удобный вариант.

— — — — -

Ну и третий отличный вариант назвали Вы — подконфигурировать типограф.

Вариант 3. Конфигурирование типографа

Но такое решение — не самое робастное и простое для обывателей.
При обновлении движка — придётся снова править код. 

Добавлено спустя 15 минут

Ris, не знаю, может дело во мне, у меня не получилось ясно озвучить суть моего запроса.
Вы уже четвёртый, кто считает, что проблема — с редактором.

Но именно в моём случае это не так.

Я точно проверил, протестировал, что редактор Redactor при вставке отформатированного текста из документа Google Docs — очищает его от лишних тегов и стилей, но при этом оставляет отметки H2 и ещё некоторые полезные.

То есть при вставке текста из браузера — да, что-то подчищается, что-то остаётся.
В разных редакторах, в разных браузерах, под разными операционнками, при копировании из разных источников — наверняка есть нюансы.
Но в целом — работа редактора Redactor меня пока полностью устраивает.

Да, там есть нюансы.
Да, это тоже интересная тема.

Но именно мой данный запрос — совершенно о другом. 
Я не знаю, как это объяснить так, чтобы услышали. )))))

— — — — -

Хардкодное решение именно моего запроса — выше озвучил Sonat (внести точечное изменение в код Типографа).

А также я описал два более простых решения: отключить типограф либо использовать абзацы с неудаляемыми пробелами (энтеры и пробелы), а переносы строк (шифт-энтер).

— — — — -

Именно данную тему считаю решённым.
Спасибо всем откликнувшимся.

Топик не закрываю, возможно у других участников возникнут уточнения, дополнения.

Либо можем обсудить здесь две затронутые смежные темы:
1. Очистка кода при вставке (в разных редакторах, в разных браузерах, из разных источников, под разными операционнками).
2. Очистка кода при переключении режимов либо при сохранении.

В очередной раз повторюсь, что мой исходный вопрос был — именно про отображение.

Добавлено спустя 3 часа

UPD Не просто Shift+Enter, но потом ещё пробел нужно поставить в новой строке.
В этом случае пробел заменяется на обязательный пробел.

Исходный код при этом выглядит следующим образом:

  1. <p>
  2. &nbsp;
  3. <br>
  4. Текст.<br>
  5. &nbsp;
  6. </p>
#12 24 января 2022 в 21:04

Вы уже четвёртый, кто считает, что проблема — с редактором.

Владимир Переверзев

Не с редактором, с браузером.

На моём сайте, все пользователи, размещавшие неразмеченный контент, сознались, что пользуются Internet Explorer.

#13 27 января 2022 в 00:15

Не с редактором, с браузером.

На моём сайте, все пользователи, размещавшие неразмеченный контент, сознались, что пользуются Internet Explorer.

Ris


При всём уважении к Вам — попробуйте прочитать то, что я написал.

Ваш опыт — это хорошо. Но ко мне — он никак не применим. Увы.

Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.