Как убрать из начала текста в редакторе CKEditor html-тэги <p></p> ?

Аватар пользователя roman-yrv roman-yrv 18 августа 2012 в 16:24

Добрый день !

Заметил одну неприятную ситуацию.

А именно, когда с помощью CKEditor вводишь текст, то при последующем редактировании обнаруживается, что вначале текста автоматически устанавливается <p></p>.

Скажите пожалуйста, как это можно убрать ?

Комментарии

Аватар пользователя roman-yrv roman-yrv 18 августа 2012 в 21:57

unidiag wrote:
Удаляй в "источнике" лишние p-эшки и сохраняй

Понимаете, сам бы я, может быть, и удалял бы ...
Но, думаю, потенциальные клиенты такую "идею" не поймут. Smile

Аватар пользователя VasyOK VasyOK 18 августа 2012 в 19:23

Угу, и они вновь появятся при следующем редактировании.

Варианты:
1) Сложный. Убираем тег из списка допустимых в формате ввода. Бред получится.
2) Bueditor. Генерирунет чистый-пречистый html-код вот только вам оно зачем?

Аватар пользователя roman-yrv roman-yrv 18 августа 2012 в 22:01

VasyOK wrote:
Угу, и они вновь появятся при следующем редактировании.

Варианты:
1) Сложный. Убираем тег из списка допустимых в формате ввода. Бред получится.
2) Bueditor. Генерирунет чистый-пречистый html-код вот только вам оно зачем?

То есть, получается, что это - глюк и его нужно обходить ?

А если написать какой-нибудь небольшой модуль, в котором переопределить hook_node_presave, в котором удалять последовательность "" в начале текста ?

Аватар пользователя VasyOK VasyOK 19 августа 2012 в 0:03

Так подождите. Где вы видите тег <p>?
В "визульном" режиме или в исходном коде?

Аватар пользователя roman-yrv roman-yrv 19 августа 2012 в 0:26

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

Аватар пользователя RedRat RedRat 19 августа 2012 в 1:04

Это явно не Ckeditor - по крайней мере, у меня на кучке сайтов ничего подобного нет. Скорее всего, это фильтр преобразования переводов строк получает откуда-то пробел или перевод строки, и преобразует его в пустой абзац.

Аватар пользователя roman-yrv roman-yrv 19 августа 2012 в 8:15

У Вас эти сайты на какой версии Drupal ? Я говорю о Drupal 7.
И скажу еще, что я с фильтрами никаких операций не производил.

Аватар пользователя unidiag unidiag 19 августа 2012 в 9:42

"roman-yrv" wrote:
Понимаете, сам бы я, может быть, и удалял бы ...
Но, думаю, потенциальные клиенты такую "идею" не поймут. :)

Можно ещё написать костыль на javascript, который будет искать пустые p-эшки и присваивать им display:none;

Аватар пользователя roman-yrv roman-yrv 19 августа 2012 в 11:20

Как-то странно получается ...
Друпал - вроде бы известная и серьезная система.
CKEditor - тоже серьезный редактор.
А при стыковке - некий глючок, для которого, получается, нет готового решения.

Я, скорее всего, для решения попробую написать небольшой модуль, который бы перехватывал hook_field_presave или hook_node_presave и на этом этапе чистил бы это поле от мусора.

Аватар пользователя roman-yrv roman-yrv 10 ноября 2015 в 11:48

Вот скрины.
Зашел в режим редактирования ранее введенной ноды.
И неизвестно почему там сначала оказался пустой абзац.

Аватар пользователя VasyOK VasyOK 19 августа 2012 в 12:49

Ерунда какая-то. Хотя теперь ясно, что у вас за теги.

Вы этот текст вписываете в редактор или копируете из Верда? Формат ввода Full HTML, который был в drupal по умолчанию или вы с ним поиграли?

Аватар пользователя roman-yrv roman-yrv 19 августа 2012 в 17:07

Решил поэкспериментировать с перехватом хука hook_node_presave

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

<?php
function yrv_review_node_presave($node)
{
    if (
$node->type=='yrv_review')
    {
        
$bd=$node->field_body['und']['0']['value'];
        
$node->field_body['und']['0']['value']=str_replace('<p></p>','',$bd);
        
        
dpm($node->field_body['und']['0']['value']);
    };
        
    return 
$node;    
};
?>

Что самое интересное - так это то, что почему-то не отрабатывается функция str_replace ...

Может, кто сталкивался с подобной проблемой ?

Аватар пользователя Andruxa Andruxa 20 августа 2012 в 1:57

CKEditor 7.x-1.9, не наблюдаю такой проблемы
а если заменить формат ввода на FilteredHTML ?

Аватар пользователя roman-yrv roman-yrv 20 августа 2012 в 15:06

Кстати, посмотрел на свой другой учебный мини-сайт - там таких проблем почему-то нет ...
Попробую сравнить их конфигурацию.

Аватар пользователя roman-yrv roman-yrv 20 августа 2012 в 17:30

Проверил, сверил ...
Разницу в установках фильтров не нашел.

Кстати, заметил такую вещь.
Если на странице редактирования ноды нажимать на ссылку "Switch to rich text editor" / "Switch to plain text editor", то при каждом переходе в Rich Text Editor происходит добавление тэгов <p></p> в начало текста.
То есть, 5 раз открылся таким образом CKEditor - в начале текста 5 пустых абзацев.

Аватар пользователя Andruxa Andruxa 20 августа 2012 в 18:18

- снесите libraries, jqeryupdate, ckedittor - либы, модули, разного рода bef, htmlawed,
- удалите записи в БД,
- устанавливайте заново и смотрите, когда возникнет проблема
- ????
- PROFIT!

Аватар пользователя roman-yrv roman-yrv 20 августа 2012 в 22:33

Сносил разные модули, сносил и заново устанавливал CKEditor - не помогло Sad

Завтра установлю Drupal сначала уже как на новый локальный сайт и буду один за другим устанавливать модули и тогда смотреть, где эта ошибка снова возникнет.

Аватар пользователя roman-yrv roman-yrv 21 августа 2012 в 12:18

Конечно, удалял. Не помогло.

Буду идти по другому пути.

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

Так, думаю, проще.

Аватар пользователя roman-yrv roman-yrv 22 августа 2012 в 14:08

Собрал Drupal на другом локальном сайте, всё нормально Smile

Наверное, в тот раз был какой-то глюк ...

Аватар пользователя roman-yrv roman-yrv 29 сентября 2012 в 20:39

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

Кто знает, какой хук можно перехватить при инициализации редактора CKEditor, чтобы можно было тупо удалять последовательности "<p></p>" в начале текста ?

Аватар пользователя misterpronin misterpronin 11 октября 2012 в 19:28

Да... проблема мне хорошо известна и преследует меня уже давно... Обычно лишний параграф автоматом ставится в конец ноды только после какой-нибудь таблицы... Поэтому приходится после каждого создания или редактирования ноды выбирать Switch to plain text и удалять этот параграф... Данная проблема присутствует далеко не на одном моём сайте...

Решение не найдено?

Аватар пользователя xSPiRiTx xSPiRiTx 11 октября 2012 в 22:33

roman-yrv, у тебя сплошная магия.....elfinder не запускается правильно, теперь ckeditor бодяжит....чего нам ждать завтра? прямо как-то подозрительно уже

Аватар пользователя roman-yrv roman-yrv 11 октября 2012 в 23:19

Насчет CKEditor - у меня подозрение, что эта ошибка произошла вследствие какого-то некорректного удаления (или установки) модуля.

Аватар пользователя Myron Myron 12 октября 2012 в 5:44

xSPiRiTx wrote:
roman-yrv, у тебя сплошная магия.....elfinder не запускается правильно, теперь ckeditor бодяжит....чего нам ждать завтра? прямо как-то подозрительно уже

Это что, позиция такая жизненная следить? Велико желание всех "опустить?"
А по делу есть что сказать?
Несколько выше другой чел указал же на подобную бяку, но в конце сообщения.

Аватар пользователя roman-yrv roman-yrv 12 октября 2012 в 8:30

Кстати, как отследить, что происходит, когда в форме редактирования ноды переключаешься с простого реактора на CKEditor ?
Вот в этом случае как раз каждый раз и дописываются в начало эти параграфы.

Аватар пользователя xSPiRiTx xSPiRiTx 12 октября 2012 в 10:52

"Myron" wrote:
Это что, позиция такая жизненная следить? Велико желание всех "опустить?"
А по делу есть что сказать?
Несколько выше другой чел указал же на подобную бяку, но в конце сообщения.

УМВР
никто никого не опускал! я так-то сам лох в друпале. я больше немекал на то, что он делает что-то не так

Аватар пользователя roman-yrv roman-yrv 12 октября 2012 в 12:35

Интересно, что если подключить CKEditor через модуль Wysiwyg, то этой проблемы нет. Все работает нормально.

Аватар пользователя misterpronin misterpronin 12 октября 2012 в 14:09

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

Спасибо что про Wysiwyg рассказал! Сейчас попробую его поставить... а то мне ещё осталось скопировать около 300 статей... и если заработает... то гемору будет поменьше...