Исправление html кода для bb редактора

Скрипты и советы | 29 февраля 2016

парсер, BBcode, хаки, советы, мы рекомендуем

Исправление html кода для bb редактора


Если вдруг ваш сайт на DLE случайно поломал отображение верстки в админке, то данная заметка для вас.

Как это обычно бывает?



В настройках сайта используется по-умолчанию BBcode редактор для написания новостей и статических страниц.
Установлена галочка "автоматический перенос строк" и все прекрасно.

Но в какой то момент из-за шила в пятой точке, либо по любой другой причине админ сайта включает на сайте визуальный редактор кода.
Для свежих версий DLE это может быть как LiveEditor (WYSIWYG),
Исправление html кода для bb редактора


так и TinyMCE (WYSIWYG) и вот тут начинаются чудеса.
Исправление html кода для bb редактора


Как только вы включаете визуальный редактор (WYSIWYG) то отключается "автоматический перенос строк" для всех новых публикаций и всех тех, что вы будите редактировать.

Появляется избыточный (даже мусорный) html код. Эдакий аналог редактор Word в худщем своем виде.
Через некоторое время вы понимаете - Стандартный (BBcode) редактор значительно лучше и устанавливаете в админке сайта для работы с новостями.

И вот тут сюрприз: ваша публикаци в режиме редактирования превращается в чистый html без переноса строк.
Людям далеким от html эта каша ломает мозг, как жить дальше?
Исправление html кода для bb редактора

Многие на этот этапе пугаются и включают (WYSIWYG) редактор обратно, продолжают страдать и жевать кактус.

Но есть решение данной проблемы!

Существует мнение что у dle постоянная проблема с этим переключением редакторов, в принципе основные проблемы, это теги:
<br><p><strong>&ndash;

Необходимо поправить парсер, он сам будет выдавать более менее нормальный код.

Для этого нужно


Открыть файл engine/classes/parse.class.php и найти:

 if( !$use_html ) {
  $txt = str_ireplace( "<br>", "\n", $txt );
  $txt = str_ireplace( "<br />", "\n", $txt );
 }


Выше добавить:

 if( !$wysiwig ){
  $txt = preg_replace( "#<p>(.+?)<\/p>#is", "$1\n", $txt );
  $txt = preg_replace( "#<strong>(.+?)<\/strong>#is", "[b]$1[/b]", $txt );
  $txt = str_replace( "<br />", "\n", $txt );
 }



После этих правок то, что раньше было в виде html в режиме (BBcode) - тепреь опять отображается как нужно.
Вот только в тот момент как вы захотите обновить свою версию DLE на самую свежую наши правки опять поломаются.

Но и этого можно избежать.

Нам лишь нужно провести "перестроение публикаций"
Исправление html кода для bb редактора



После которого код новостей будет восстановлен.
Исправление html кода для bb редактора


Теперь весь алгоритм по порядку:



1. Проверяем, что в настройках сайта установлен Стандартный (BBcode) редактор
для
- Редактор при добавлении/редактировании новостей в админпанели
- Редактор при добавлении/редактировании статических страниц в админпанели
- Редактор для комментариев и персональных сообщений на сайте
- Редактор при добавлении публикаций на сайте
- Редактор для быстрого редактирования публикаций на сайте

2. Открыть файл engine/classes/parse.class.php и найти:

 if( !$use_html ) {
  $txt = str_ireplace( "<br>", "\n", $txt );
  $txt = str_ireplace( "<br />", "\n", $txt );
 }


Выше добавить:

 if( !$wysiwig ){
  $txt = preg_replace( "#<p>(.+?)<\/p>#is", "$1\n", $txt );
  $txt = preg_replace( "#<strong>(.+?)<\/strong>#is", "[b]$1[/b]", $txt );
  $txt = str_replace( "<br />", "\n", $txt );
 }


3. Переходим на страницу /admin.php?mod=dboption и сохраняем копию БД

4. Переходим в раздел Перестроение публикаций /admin.php?mod=rebuild
и запускаем "перестроение публикаций"

5. Проверяем успешность изменений.

6. Открыть файл engine/classes/parse.class.php и найти:

if( !$wysiwig ){
  $txt = preg_replace( "#<p>(.+?)<\/p>#is", "$1\n", $txt );
  $txt = preg_replace( "#<strong>(.+?)<\/strong>#is", "[b]$1[/b]", $txt );
  $txt = str_replace( "<br />", "\n", $txt );
 }


и удалить.


Задача выполнена.

Решение реализовал Виктор Ермаков (admin@rezer.net)
[Из песочницы] Sublime Text 3 жив. (Настройка и работа)

Sublime Text 3 — кроссплатформенный текстовый редактор. Краткий гайд для начинающих работать в sublime и в сфере...

Подробнее
Мысли о клиентской программе для постинга новостей на ДЛЕ-сайты

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

Подробнее
Notepad++ 5.1.4

Notepad++ - это мощный редактор текстовых файлов (замена стандартного Блокнота) с поддержкой синтаксиса большого...

Подробнее
Box-shadows Device

Всем привет! Хочу представить вашему вниманию небольшую разработку — Box-shadows Device (#bSd). Это инструмент, который...

Подробнее
Brackets для сомневающихся и новичков

СД: НЧ Без плагинов Brackets не лучше других редакторов, но с ними его стоит хотя бы попробовать. Введение Не так давно...

Подробнее
Сайт компании Авторент.СУ

Официальный сайт компании Авторент.Су Прокат легковых автомобилей без водителя в Санкт-Петербурге. Таблицы с расчетами...

Подробнее

💬 Комментарии

В связи с новыми требованиями законодательства РФ (ФЗ-152, ФЗ «О рекламе») и ужесточением контроля со стороны РКН, мы отключили систему комментариев на сайте.

🔒 Важно Теперь мы не собираем и не храним ваши персональные данные — даже если очень захотим.

💡 Хотите обсудить материал?

Присоединяйтесь к нашему Telegram-каналу:

https://t.me/tcsecms/

Нажмите кнопку ниже — и вы сразу попадёте в чат с комментариями

  1. Спасибо. Но есть еще теги как ul и li, их бы тоже поменять!
    Владимир Владимир 28 ноября 2016 17:36
    1. а не пробывали сделать так:

      1. сохранить текущую копию БД
      2. в админке "поиск и замена"
      найти
      <ul>

      заменить на
       [list] 


      3.найти
      </ul>

      заменить на
       [/list] 


      4. найти
      <li>

      заменить на
       [*] 


      5. найти
      </li>

      заменить на
      <br> 



      не факт, что сработает.
      но вдруг, поможет.
      TCSE TCSE 28 ноября 2016 18:27