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


Исправление 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)


Уважаемые посетители,
Если Вы хотите оставить заказ на разработку сайта или получить предварительную консультацию воспользуйтесь формой по ссылке ниже.
Обратная связь
Наш специалист ответит вам в течении суток.



Похожие публикации

Несколько интересностей и полезностей для веб-разработчика #32

Доброго времени суток, уважаемые хабравчане. За последнее время я увидел несколько интересных и полезных инструментов/библиотек/событий, которыми хочу поделиться с Хабром. ICEcoder Это не просто... читать далее

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

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

Несколько интересностей и полезностей для веб-разработчика #31

Доброго времени суток, уважаемые хабравчане. За последнее время я увидел несколько интересных и полезных инструментов/библиотек/событий, которыми хочу поделиться с Хабром. Исходники Reddit Gravit ... читать далее

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

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

Notepad++ 5.1.4

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

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

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

Комментарии (2)

  1. #1 написал: Владимир
    Группа: Гости
    28 ноября 2016 17:36

    Спасибо. Но есть еще теги как ul и li, их бы тоже поменять!
    • 0

       

    1. #2 написал: TCSE
      Группа: Администраторы
      28 ноября 2016 18:27

      а не пробывали сделать так:

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

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


      3.найти
      </ul>

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


      4. найти
      <li>

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


      5. найти
      </li>

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



      не факт, что сработает.
      но вдруг, поможет.
      • 0

         

Прокомментировать


@

  • bowtiesmilelaughingblushsmileyrelaxedsmirk
    heart_eyeskissing_heartkissing_closed_eyesflushedrelievedsatisfiedgrin
    winkstuck_out_tongue_winking_eyestuck_out_tongue_closed_eyesgrinningkissingstuck_out_tonguesleeping
    worriedfrowninganguishedopen_mouthgrimacingconfusedhushed
    expressionlessunamusedsweat_smilesweatdisappointed_relievedwearypensive
    disappointedconfoundedfearfulcold_sweatperseverecrysob
    joyastonishedscreamtired_faceangryragetriumph
    sleepyyummasksunglassesdizzy_faceimpsmiling_imp
    neutral_faceno_mouthinnocent
Вопрос:

Космонафт Юрий Га.....

Ответ: *

Кликните на изображение чтобы обновить код, если он неразборчив

Архив сайта

Реклама на сайте