Быстрый лёгкий надёжный форумный движок
Вы не вошли.
Страницы 1
Тема закрыта
Непонятно, по каким соображениям спойлер убрали. Имхо хорошая фича. Сам хотел прикрутить на форуме, который находится в моем ведении. Думаете, не стОит?
По-моему это какая-то бестолковая фича.
[spoiler]а мне нравится[/spoiler]
А я вообще незнаю что это такое.
А я сегодня у себя на форуме спойлер решил вернуть.
Правда я его переделал и теперь он должен работать как выпадающая/прячущаяся область.
Пример тут _http://forum.alltes.ru/viewtopic.php?pid=7208#p7208
З.Ы. Все еще сижу на 1.2 ветке
А я сегодня у себя на форуме спойлер решил вернуть.
Правда я его переделал и теперь он должен работать как выпадающая/прячущаяся область.
Классно, как раз это мне и нужно. Поделитесь пожалуйста, как это сделать?
Редактировался Pashok (2009-04-28 14:11:24)
Поделитесь пожалуйста, как это сделать?
1. В панель ББ-кодов нужно добавить код
[spoiler][/spoiler]
Свой вариант не предоставляю, т.к. у меня нестандартная мутация панели бб-кодов.
2. В файле parser.php изменена ф-и do_bbcode
В глобальные переменные добавлена $spoiler_counter. Выглядит так
global $lang_common, $pun_user, $spoiler_counter;
После обработки цитат
if (strpos($text, 'quote') !== false)
{
$text = str_replace('[quote]', '</p><blockquote><div class="incqbox"><p>', $text);
$text = preg_replace('#\[quote=("|"|\'|)(.*)\\1\]#seU', '"</p><blockquote><div class=\"incqbox\"><h4>".str_replace(array(\'[\', \'\\"\'), array(\'[\', \'"\'), \'$2\')." ".$lang_common[\'wrote\'].":</h4><p>"', $text);
$text = preg_replace('#\[\/quote\]\s*#', '</p></div></blockquote><p>', $text);
}
добавил обработку спойлера
// Обрабатываем спойлер
if (strpos($text, 'spoiler') !== false)
{
if (!isset($spoiler_counter))
$spoiler_counter = 0;
$flag = true;
$pos = 1;
$kolvo = 0;
$sum = 0;
while ($flag && strpos($text, 'spoiler', $pos) !== false)
{
$pos = strpos($text, 'spoiler', $pos);
if (substr($text, $pos - 1, 9) == '[spoiler]') {
$kolvo++;
$sum++;
} elseif (substr($text, $pos - 2, 10) == '[/spoiler]')
$kolvo--;
if ($kolvo < 0 )
$flag = false;
$pos = $pos + 7;
}
if ($flag && $kolvo == 0 )
{
for ($i = $sum; $i > 0; $i--)
{
$spoiler_counter++;
$text = preg_replace('#\[spoiler\]#', '</p><blockquote><span class=switch style="cursor:hand;" onClick="if(pSpl'.$spoiler_counter.'.style.display == '."'".'none'."'".') pSpl'.$spoiler_counter.'.style.display = '."'".'block'."'".'; else pSpl'.$spoiler_counter.'.style.display = '."'".'none'."'".';"><h4>'.$lang_easy_bbcode['Spoiler'].':</h4></span><span id=pSpl'.$spoiler_counter.' style="display:none;border-top:1px dotted gray;margin-top:3px">', $text, 1);
}
$text = preg_replace('#\[\/spoiler\]#', '</span></blockquote><p>', $text);
}
}
Кажется все.
Спасибо, правда не получилось почему-то. Сделал изменения в parser.php, пока без изменений в панели ББ-кодов. Не очень понял вот это:
В файле parser.php изменена ф-и do_bbcode
В глобальные переменные добавлена $spoiler_counter.
Строку "global $lang_common, $pun_user, $spoiler_counter;" добавил прямо перед обработкой спойлера.
Вот что получилось:
Ошибку выдаёт вот в этой строке:
$text = preg_replace('#\[quote=("|"|\'|)(.*)\\1\]#seU', '"</p><blockquote><div class=\"incqbox\"><h4>".str_replace(array(\'[\', \'\\"\'), array(\'[\', \'"\'), \'$2\')." ".$lang_common[\'wrote\'].":</h4><p>"', $text);
Редактировался Pashok (2009-04-29 13:42:11)
Глобальные переменные должны быть объявлены в начале ф-ии.
Т.е.
//
// Convert BBCodes to their HTML equivalent
//
function do_bbcode($text)
{
global $lang_common, $pun_user, $spoiler_counter;
а потом уже идет обработка цитирования, спойлера и остальных бб-кодов.
Всё-равно ошибка:
Notice: Undefined variable: lang_easy_bbcode in /home/users/m/mashkara/domains/tv1080.ru/forum/include/parser.php on line 536
Ну так ты добавь lang_easy_bbcode
Вместо этого
$lang_easy_bbcode['Spoiler']
поставь
'Спойлер'
Спасибо, работает в IE
Но не работает в Mozilla Firefox , впрочем как и здесь: http://forum.alltes.ru/viewtopic.php?pid=7208#p7208
Можно как-нибудь модифицировать, чтобы и в Мозиле работало?
Редактировался Pashok (2009-04-29 19:42:30)
Если найдешь решение, напиши.
Я Оперой пользуюсь, тестироватье на чем
Я к сожалению не знаю PHP. Может мастера помогут?
Страницы 1
Тема закрыта