Перейти к содержимому
Русский язык для Invision Community 5

Как сохранить спойлеры от IPB 3.x ?

У меня в IPB 3.4.9 спойлеры с заголоком, типа {spoiler=заголовок}текст{/spoiler}

А в IPS 4 всё не так… При обновлении такие спойлеры пропали.

Стал искать плагины спойлеров для IPS 4.x - они не используют BB-коды вообще! Они сразу пишут HTML-конструкцию для работы своего спойлера (потом, при очередном обновлении движка это всё с большой вероятностью пропадёт или заглючит). И заголовков нет…

Нашёл разве что плагин который выводит в заголовок спойлера первую строку скрытого текста если она в {b}-тегах. Но это слишком кривое решение.

 

Что делать?

Рекомендованные сообщения

Не понял. Вам нужен спойлер для 4-ки с возможностью указать заголовок или сохранить заголовки при обновлении?

  • Автор

Не понял. Вам нужен спойлер для 4-ки с возможностью указать заголовок или сохранить заголовки при обновлении?

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

И сохранить старые заголовки при обновлении с 3.4.9 до 4.4.4

Пока что не подскажу. Нужно смотреть.

Вы делали обновление? Что со спойлерами произошло? Удалились из постов или заголовок исчез?

 

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

Посмотрите https://ckeditor.com/cke4/addon/spoiler

  • Автор

Вы делали обновление? Что со спойлерами произошло? Удалились из постов или заголовок исчез?

Старые спойлеры с заголовками - поломались. В тексте в IPS4 написано отрыто {spoiler=заголовок}, потом текст весь. Конечный тег {/spoiler} вырезан полностью. Т.е. в базе формата IPS 4 штатная конвертаций необратимо портит старые спойлеры.

{spoiler}…{/spoiler} - движок корректно конвертировал сам, проблема только вот со {spoiler=…}…{/spoiler}

 

Проблема в том что IPS в базе (в отличии от IPB) не хранит BB-теги спойлеров, она сразу конвертирует их в HTML div class="ipsSpoiler"…

 

Можно конечно руками в базе по аналогии заменить BB на HTML (очевидно, перед конвертацией форума), но может есть готовые решения или идеи?

Изменено пользователем f2065

Не тестировал.

 

system/Text/LegacyParser.php

Найти

		$value = str_replace( "[/spoiler]", "</p></div></div><p>", $value );

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

		$value = preg_replace( "#\[spoiler=[\"']?(.+?)[\"']?\]#i", '</p><div class="ipsSpoiler" data-ipsSpoiler><div class="ipsSpoiler_header"><span>\\1</span></div><div class="ipsSpoiler_contents"><p>', $value);

 

Но все равно по умолчанию кастомные заголовки будут заменены на дефолтные javascript'ом

Создайте аккаунт или войдите в него для комментирования

Аккаунт

Навигация

Поиск

Поиск

Настроить push-уведомления браузера

Chrome (Android)
  1. Нажмите на иконку замка рядом с адресной строкой.
  2. Нажмите Права доступа -> Уведомления.
  3. Измените свои настройки.
Chrome (компьютер)
  1. Нажмите на иконку замка в адресной строке.
  2. Выберите Настройки сайта.
  3. Найдите Уведомления и измените свои настройки.