Конвертор uCoz -> phpBBex

Board index phpBBex 1.x Мастерская

Description: Только готовые решения! Статьи, заметки, моды и другие полезности для phpBBex 1.x и phpBB 3.0.x.
Moderator: Поддержка

Post #1by Алексей » 17.10.2012, 20:50

Продолжение развития конвертора, который был написан для phpBB3 http://www.phpbbguru.net/community/topic24963.html.

Конвертор был переделан для phpBBex и добавлены след.изменения:
v1.0.1 for phpBBex:
1. Улучшена функция импорта пользователей. Добавлен импорт пола и репутации, структура полученного профиля пользователя подходит только для phpBBex.
2. Исправлен массив для импорта недостающих BB-кодов, структура массива подходит только для phpBBex . Исправлен BB-код спойлера.
3. Добавлена функция для поиска вложенных файлов в других папках и среди уже загруженных, т.е. производится наиболее полный поиск.
4. Исправлены "мелкие" ошибки.

Файл конвертора !ucoz2phpbbex.php нужно распологать в корневой папке, всё остальное в папке ucoz:
"./ucoz/_fr/" - вложенные файлы,
"./ucoz/_s1/" - файлы базы данных,
"./ucoz/avatar/" - аватарки,
т.е. надо просто разархивировать дамп в папку ucoz.

В конце работы скрипта:
1. Чистим кэш (в админке на главной)
2. Делаем синхронизацию (в админке на главной)
3. Делаем индексацию (в разделе обслуживание -> база данных)
4. Для авторизации с паролем из ucoz добавить строчку "|| crypt($password_old_format, $row['user_password']) == $row['user_password']" в условие в файле auth_db.php. В какое условие добавлять ищем в файле auth_db.php, который идёт в комплекте. Если файл auth_db.php для phpBBex v1.5.2 не изменялся, то просто заменить его.

Тестировал скрипт на чистом phpBBex v1.5.2. Denwer3_Base_2012-06-27 (Apache 2.2.22 + PHP 5.3.13 + MySQL 5.5.25). Почти всё ОК! :wink:
Attachments
ucoz2phpbbex.zip
Конвертор v1.0.1
(25.86 KiB) Downloaded 501 times
Last edited by Алексей on 21.10.2012, 00:20, edited 2 times in total.
Алексей M
Topic author, Бывалый
Avatar
Age: 36
Reputation: 19
With us: 4 yaers 5 months

Post #2by Алексей » 21.10.2012, 00:00

v1.0.2 for phpBBex:
1. Добавлен импорт смайликов. В конверторе описаны и импортируются смайлики из набора №23 (Колобки - тёмный фон). У кого другой набор смайликов описываем их в массиве $smilies, главное - это указать имя файла, т.к. поиск смайликов в сообщении ведется по имени файла. Для этого раскрываем полный список смайлов в uCoz и вытаскиваем имя файла у смайликов через правую кнопку мыши. А также, меняем константу пути к смайликам UCOZ_BASE_SMILIES_PATH. Путь к смайликам и имя файла смайлика можно увидеть посмотрев свойство картинки смайлика в браузере, как на примере:
Снимок.JPG

После импорта, смайлики можно отредактировать в админке, если что-то не так.
2. Добавил очистку кэша $cache->purge() после добавления смайликов и bb-кодов в базу, т.к. функция generate_text_for_storage() достает старую информацию о наличии смайликов и bb-кодов из кеша, если он есть, а не из базы.
3. Исправлена ошибка при импорте опроса без заголовка(в uCoz опрос без заголовка возможен).

Файл конвертора !ucoz2phpbbex.php нужно распологать в корневой папке, всё остальное в папке ucoz:
"./ucoz/_fr/" - вложенные файлы,
"./ucoz/_s1/" - файлы базы данных,
"./ucoz/avatar/" - аватарки,
"./ucoz/sml/" - пользовательские смайлики,
т.е. надо просто разархивировать дамп в папку ucoz.

В конце работы скрипта:
1. Чистим кэш (в админке на главной)
2. Делаем синхронизацию (в админке на главной)
3. Делаем индексацию (в разделе обслуживание -> база данных)
4. Для авторизации с паролем из ucoz добавить строчку "|| crypt($password_old_format, $row['user_password']) == $row['user_password']" в условие в файле auth_db.php. В какое условие добавлять ищем в файле auth_db.php, который идёт в комплекте. Если файл auth_db.php для phpBBex v1.5.2 не изменялся, то просто заменить его.
5. Чистим кэш в браузере Ctrl-F5.

Тестировал скрипт на чистом phpBBex v1.5.2, Denwer3_Base_2012-06-27 (Apache 2.2.22 + PHP 5.3.13 + MySQL 5.5.25). Всё ОК.
Attachments
ucoz2phpbbex v1.0.2.zip
v1.0.2 for phpBBex 1.5.2
(28.54 KiB) Downloaded 746 times
Алексей M
Topic author, Бывалый
Avatar
Age: 36
Reputation: 19
With us: 4 yaers 5 months

Post #3by nazz » 24.10.2012, 16:16

Спасибо огромное, очень помогло!
nazz
Гость

Post #4by nazz » 29.11.2012, 20:52

Нашелся небольшой косяк с логинами на кирилице(логин-пароль не совпадают)
nazz
Гость

Post #5by Алексей » 29.11.2012, 22:09

nazz, этого я не наблюдал.
Были в ucoz две пары логин-пароль, один из которых Романовна - проблем при входе после конвертации не было.
Косяк я обнаружил с репутацией - она сбрасывалась в 0 у некоторых, поэтому лучше её не переносить.
Алексей M
Topic author, Бывалый
Avatar
Age: 36
Reputation: 19
With us: 4 yaers 5 months

Post #6by Алексей » 30.11.2012, 11:08

Ещё был косяк с днями рождениями - они неправильно записывались в базу, из-за этого не отображались пользователи в списке ДНИ РОЖДЕНИЯ на сайте.
Пришлось написать скрипт для исправления в базе данных формата дней рождения (вместо 1-2-1955, должно быть _1-_2-1995, где _ - это пробел).

Code: Select all
<?php
/**
*
* @Update Birthday format in USER_TABLE
*
*/

define('IN_PHPBB', true);

$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);

//Сообщаем браузеру кодировку страницы - utf-8 
header('Content-Type: text/html;charset=utf-8');

require_once($phpbb_root_path . 'common.' . $phpEx);

// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup();

$sql = 'SELECT  user_id, user_birthday FROM ' . USERS_TABLE;
$result = $db->sql_query($sql);
$file = @fopen('output.txt','a+');
$i = 0;
while ($row = $db->sql_fetchrow($result))
{
   if (empty($row['user_birthday'])) continue;
   if (preg_match('/[\d\s]?\d-[\d\s]?\d-\d{4}/', $row['user_birthday']))
   {
      $i++;
      $numbs = explode('-', $row['user_birthday']);
      $str = (strlen($numbs[0]) == 1) ? " $numbs[0]" : $numbs[0];
      $str .= '-';
      $str .= (strlen($numbs[1]) == 1) ? " $numbs[1]" : $numbs[1];
      $str .= '-';
      $str .= $numbs[2];
      
      $sql_ary = array(
         'user_birthday'      =>   $str,
      );
      
      $sql = 'UPDATE ' . USERS_TABLE . '
      SET ' . $db->sql_build_array('UPDATE', $sql_ary) . '
      WHERE user_id = ' . (int) $row['user_id'];
      $db->sql_query($sql);
      fwrite($file, "$row[user_id] : $row[user_birthday] ===>>> $str\n");
   }
}
echo "Обновлено $i строк";

?>
Алексей M
Topic author, Бывалый
Avatar
Age: 36
Reputation: 19
With us: 4 yaers 5 months

Post #7by Алексей » 13.04.2013, 10:58

"Мимоходом" просматривая скрипт конвертора обнаружил ещё один косяк при поиске прикрепленных файлов. Этот косяк не влият на обнаружение самих прикрепленных файлов, но замедляет их поиск:
Code: Select all
//функция поиска вложенных файлов
function find_file($file)
{
   $mime = mime_content_type($file);//MIME-тип для файла
   if (!$mime) return false;
   
   if (strpos($mime, 'image/') !== false) //если файл - картинка
   {
      $filename_full = UCOZ_ATTACHMENTS_PATH . (int)($data[1]/100) . '/' . substr($file, 1);//полный путь к большой картинке
      if (file_exists($filename_full)) //если нашли большую картинку, то возвращаем к ней полный путь
      {
         return $filename_full;
      }
      else
      {
         $find_big = true;//поищем большую картинку в других папках
         $filename_small = UCOZ_ATTACHMENTS_PATH . (int)($data[1]/100) . '/' . $file;//сохраним полный путь к маленькой картинке
      }
   }
   else
   {
      $filename_full = UCOZ_ATTACHMENTS_PATH . (int)($data[1]/100) . '/' . $file;//полный путь к вложенному файлу
      if (file_exists($filename_full)) return $filename_full;
   }
   
   //ищем в других папках UCOZ_ATTACHMENTS_PATH
   $dirs = scandir(UCOZ_ATTACHMENTS_PATH);
   foreach($dirs as $dir)
   {
      if ($dir == '.' or $dir == '..' or (int)($data[1]/100)) continue;
      if ($find_big)
      {
         $filename_full = UCOZ_ATTACHMENTS_PATH . $dir . '/' . substr($file, 1);//полный путь к большой картинке
         if (file_exists($filename_full)) return $filename_full;
      }
      $filename_full = UCOZ_ATTACHMENTS_PATH . $dir . '/' . $file;//полный путь к вложенному файлу. Если будет найдена маленькая картинка, то она тоже вернётся
      if (file_exists($filename_full)) return $filename_full;
   }
   
   if ($filename_small and file_exists($filename_small)) return $filename_small;//если маленькая картинка есть, вернем её полный путь
   
   
   //ищем файлы среди загруженных файлов
   global $db, $config, $phpbb_root_path;
   if ($find_big) //если файл - картинка
   {
      $sql = 'SELECT  physical_filename
            FROM ' . ATTACHMENTS_TABLE . '
            WHERE real_filename = \'' . substr($file, 1) . '\' OR real_filename = \'' . $file . '\'';
   }
   else
   {
      $sql = 'SELECT  physical_filename
            FROM ' . ATTACHMENTS_TABLE .'
            WHERE real_filename = \'' . $file . '\'';
   }
   $result = $db->sql_query($sql);
   $row = $db->sql_fetchrow($result);
   $db->sql_freeresult($result);
   if ($row['physical_filename'])
   {
      copy("{$phpbb_root_path}$config[upload_path]/$row[physical_filename]", UCOZ_ATTACHMENTS_PATH . $file);
      echo "ВНИМАНИЕ: вложенный файл $file скопирован несколько раз<br/>";
      return UCOZ_ATTACHMENTS_PATH . $file;
   }
   
   return false;
}
Косяк в том, что в функцию не передаётся данные о посте, необходимо добавить в параметры вызова эту переменную $data:
Code: Select all
//функция поиска вложенных файлов
function find_file($file, &$data)
{
Ну и соответственно сам вызов этой функции должен быть с этим параметром $data:
Code: Select all
if ($filename_full = find_file($file, $data)) //ищем файл, $filename = полный путь или false
{
Алексей M
Topic author, Бывалый
Avatar
Age: 36
Reputation: 19
With us: 4 yaers 5 months

Post #8by O_C_A » 14.04.2013, 14:08

Ребята эта штука классная однозначно ...
У меня как раз есть форум на укозе который бы очень хотелось портировать на хост с форумом phpbbex 1.6.0
А как ей воспользоватся простому смертному? :ill:
Можно какого ни будь разжёванного описания, из разряды скопируйте там положите тут ? :pray:
Не так страшен русский танк, как его пьяный экипаж!
Я ЗНАЮ: HTML, CSS, PHP и много других страшных слов !
O_C_A M
Новичок
Avatar
Age: 37
Location: г. Тверь
Reputation: 3
With us: 3 yaers 10 months

Post #9by Aspid » 19.07.2013, 09:12

Скрипт отлично конвертирует юзеров,разделы,форумы,темы, а на сообщениях останавливается и выдает ошибку
Code: Select all
SQL ERROR [ mysqli ]

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 3 [1064]
Подскажите куда копать... где эта строка 3?
Зы.Конвертирую в PhpBB3
Aspid
Новичок
Reputation: 3
With us: 4 yaers

Post #10by Алексей » 25.07.2013, 16:15

Aspid, ошибка для phpbb3 обязательно будет выходить, так как в phpbbex есть дополнительные поля в таблицах базы данных, в которые скрипт заносит значения. Вы можете сами сравнить и закомментировать поля в скрипте, которых нет в базе phpbb3, но есть в phpbbex. У меня пока времени нет этим заниматься. А чем вам не нравиться phpbbex?
Алексей M
Topic author, Бывалый
Avatar
Age: 36
Reputation: 19
With us: 4 yaers 5 months

Post #11by Aspid » 25.07.2013, 17:26

Я конвертирую с юкоз через phpbb3 на xenforo ,а phpbbex мне нравится и один проект готовится на нем.
Алексей,а не мог бы ты по подробней описать проблему с таблицами и как исправить? Буду безмерно благодарен..
Зы.Конвертирую скриптом для phpbb3 с phpbbгуру
Aspid
Новичок
Reputation: 3
With us: 4 yaers

Post #12by Алексей » 25.07.2013, 21:57

Aspid, странно что у тебя отлично переносятся юзеры, как раз в таблице users в phpbbex дополнительно присутствуют поля:
user_gender (строка 547 в скрипте v1.0.2)
user_rating_positive (552)
user_rating_negative (553)
- для phpbb3 эти строки надо закомментировать.

Также для phpbb3 надо исправить функцию add_bbcode(), т.к. в таблице phpbb_bbcodes нет поля - bbcode_order. Или закомментировать вызов этой функции на строке 1843, а после конвертации bb-коды добавить вручную в админке.

Посмотрел функцию импорта сообщений - она должна быть совместима с phpbb3. Cудя по ошибке, SQL-запрос формируется с неправильным синтаксисом. Сделайте сброс SQL-запроса в функции ucoz_import_messages, н-р, вставьте код после строки 1708, вроде такого:
Code: Select all
file_put_contents('Z:\какая-нибудь_папка\debug.txt', $sql);
exit;
и сообщите, что у вас в файле debug.txt
Алексей M
Topic author, Бывалый
Avatar
Age: 36
Reputation: 19
With us: 4 yaers 5 months

Post #13by Aspid » 26.07.2013, 01:19

Алексей wrote:Aspid, странно что у тебя отлично переносятся юзеры, как раз в таблице users в phpbbex дополнительно присутствуют поля:
user_gender (строка 547 в скрипте v1.0.2)
user_rating_positive (552)
user_rating_negative (553)
- для phpbb3 эти строки надо закомментировать.

Также для phpbb3 надо исправить функцию add_bbcode(), т.к. в таблице phpbb_bbcodes нет поля - bbcode_order. Или закомментировать вызов этой функции на строке 1843, а после конвертации bb-коды добавить вручную в админке.

Тут у меня все хорошо, конвертор для PhpBB3 (ucoz2bb_final_for_phpbb)
Алексей wrote:Посмотрел функцию импорта сообщений - она должна быть совместима с phpbb3. Cудя по ошибке, SQL-запрос формируется с неправильным синтаксисом. Сделайте сброс SQL-запроса в функции ucoz_import_messages, н-р, вставьте код после строки 1708, вроде такого:
Строки 1708 нет ни в одном конверторе, вставил так
Code: Select all
function ucoz_import_messages($ucoz_dump)
file_put_contents('D:\EleanorServ\debug.txt', $sql);
exit;
Результата нет
Aspid
Новичок
Reputation: 3
With us: 4 yaers

Post #14by Алексей » 26.07.2013, 19:59

Aspid, в конверторе для PhpBB3 (ucoz2bb_final_for_phpbb) нужно поместить после строки 1416:
Code: Select all
1416: $sql = 'INSERT INTO ' . POSTS_TABLE . ' ' . $db->sql_build_array('INSERT', $data_post);

Ещё момент - после каждой неудачной попытки конвертации нужно восстанавливать таблицы базы данных phpbb3 в исходное состояние. Т.е. установить форум phpbb3, затем сделать дамп базы данных и после неудачной попытки конвертации восстанавливать таблицы, используя сохраненный дамп.
Алексей M
Topic author, Бывалый
Avatar
Age: 36
Reputation: 19
With us: 4 yaers 5 months

Post #15by Aspid » 08.08.2013, 13:52

Конвертор тупо прекращает работу при конвертации сообщений,Ошибок ни каких нет.
Пытаемся перенести топики в ручную
Aspid
Новичок
Reputation: 3
With us: 4 yaers

Post #16by Mneznakomec » 10.08.2013, 20:21

Использую версию 1.6.0. Файл auth_db.php заменил тем, что шёл с конвертером, но авторизоваться с паролем укоза не могу. Это основная проблема.

После импорта постов, если "плюсануть" пост, то у автора меняется репутация с любой цифры на 1 (обнуляется и прибавляется 1). Это, я так понимаю, пересчитываются реальные плюсы, а на значение в профиле наплевать движку?

У меня без проблем импортируются пользователи (расширил и добавил доп. поля, всё работает), форумы и топики, но вот посты на 41 тысяче встают: скрипт не отваливается, а будто в бесконечный цикл сваливается. Пост вроде бы без вложений, данных мало. Пробовал удалять - через 3 поста снова та же ситуация. Пока разбираюсь.

Насчёт myflush: вполне можно обойтись отсылось 250 пробелов и обычной функцией flush(). Так быстрее и корректнее (имхо).

Помогите, пожалуйста, с авторизацией. :)
Не ошибается тот, кто ничего не делает.
Mneznakomec
Новичок
Avatar
Reputation: 8
With us: 3 yaers 6 months

Post #17by Алексей » 10.08.2013, 22:11

Mneznakomec wrote:После импорта постов, если "плюсануть" пост, то у автора меняется репутация с любой цифры на 1 (обнуляется и прибавляется 1). Это, я так понимаю, пересчитываются реальные плюсы, а на значение в профиле наплевать движку
Когда я дополнял скрипт этой репутацией, то думал, что достаточно репутацию записать в определенном поле таблицы phpbb_users. А оказалось, что не достаточно, надо узнавать подробности у VEG (Евгения). Я тогда просто обнулил у всех эту репутацию.

На счёт зацикливания, надо искать на каком сообщении останавливается (возможно функция преобразования в bb-коды зацикливается), т.е. удалить на глаз около 40 тысяч первых сообщений из дампа uCoz и запустить скрипт, затем снова удалять и т.д., пока не доберётесь до проблемного сообщения. Если дело не в сообщении, то возможно проблема в нехватки памяти, браузер и т.д. Да мне кажется вы лучше меня разберётесь в чём проблема.

Если не работает авторизация, то возможно в uCoz изменили функцию хеширования пароля. Когда я конвертировал свой форум, то хорошо работала функция crypt и пример 1 в офиц.справочнике PHP:
Code: Select all
if (crypt($user_input, $password) == $password) {
   echo "Пароль верен!";
}
?>
Где $password - это хеш пароля, а $user_input - пароль, который пользователь вводит.
В коде в файле auth_db.php надо было добавить след.условие:
Code: Select all
crypt($password_old_format, $row['user_password']) == $row['user_password']"
Но в той папке есть еще два файла - auth_ldap.php и auth_apache.php. Возможно, что вам надо в них что-то изменить. Я не разбирался для чего эти файлы.
Возможно проблема в кирилице и надо как-то преобразовывать введенный пароль, попробуйте для проверки использовать логин и пароль только на английском языке.
Алексей M
Topic author, Бывалый
Avatar
Age: 36
Reputation: 19
With us: 4 yaers 5 months

Post #18by Mneznakomec » 10.08.2013, 22:53

Алексей wrote:надо узнавать подробности у VEG
Неплохо бы. :smile:

Алексей wrote:удалить на глаз около 40 тысяч первых сообщений из дампа uCoz и запустить скрипт
Пробовал, но уже после ручного завершения и без импорта пользователей. Карты пользователей не было, поэтому посты добавлялись под гостем. Причём снова отвалились через 2 тысячи, причём уже на более сложном посте, пока его ковыряю.

Алексей wrote:возможно проблема в нехватки памяти, браузер
Наврядли. Лимит памяти отключается там, пробовал на хроме и фоксе последнем: висят в одном месте. Хотя один раз хром вывалил ошибку.

Алексей wrote:Но в той папке есть еще два файла - auth_ldap.php и auth_apache.php
Первый - авторизация LDAP, есть настройка в форуме. Как я понял - сторонний сервер авторизации. Не нужно нам, короче. :) (у меня его нет)
Авторизации апача тоже нет.
Поковыряю - скажу позже.

Алексей wrote:Возможно проблема в кирилице и надо как-то преобразовывать введенный пароль, попробуйте для проверки использовать логин и пароль только на английском языке
Нет, пароли исключительно латиницей, причем символами только.

Added after 34 minutes 21 second:
Хочу добавить, что доп. поля ucoz, типа MSN и прочих, которые обычно изменяются на "Увлечение" и т.д. (потому что свои добавить нельзя) добавляются следующим образом:
1) добавляете в настройках "Управление пользователями" дополнительные поля нужные.
2) в скрипте находите место заполнения профиля пользователя:
Code: Select all
if($r_user[3])/// У пользователя есть Аватар
ucoz_add_avatar($r_user[3], $user_id, $user);

И добавляете SQL-запрос добавления в таблицу данных полей профиля (сами поля создали в админке конференции)
Code: Select all
         // Если заполнено дополнительное поле AOL (или другое)
         $sql = 'INSERT INTO ' . PROFILE_FIELDS_DATA_TABLE . ' (user_id, pf_mobile_number, pf_equipment, pf_bike, pf_real_name) VALUES(' . $user_id . ',"' . _E($r_user[19]) . '","' . _E($r_user[20]) . '","' . _E($r_user[18]) . '","' . _E($r_user[5]) . '")';
         $db->sql_query($sql);            
         //
Так я реализовал импорт реального имени и прочих данных, под которые были адаптированы поля MSN и т.д.

Added after 2 minutes 38 seconds:
// Карта ACL для основных групп
/// Создать ACL для основных групп к форуму/категории

Это что и для чего? У меня есть 2 нестандартные группы.
Не ошибается тот, кто ничего не делает.
Mneznakomec
Новичок
Avatar
Reputation: 8
With us: 3 yaers 6 months

Post #19by Mneznakomec » 12.08.2013, 21:31

Проблему с auth_db.php я победил: положил файл не туда по невнимательности. Всё по-старому и работает как нужно. :)

Дни рождения обработал скриптом - появились. Пытаюсь интегрировать в скрипт конвертера.

Загрузка зависала на большом посте с iframe и прочими ссылками. Решил банальным удалением барахла из поста. Дальше проблем не возникло.

Дальше укоз придумал новое развлечение: при импорте постов в 11 поле таблицы forump.txt появляется запись вида "12\", причём она может быть, а может и не быть. Но вот разделена символами |. Поэтому полей то 17, то 18. Здорово, правда? Я так понимаю - это путь к папкам с вложениями. Причём даже в тех постах, где вложений нет. Поэтому начинаются глюки. Решил банально: проверяю поле $data[10] на длину больше трёх символов и определяю смещение, которое использую в дальнейшем.

Также в моём бэкапе находились посты с указанием на темы, которых физически уже нет. Пришлось добавлять небольшую проверку: при выборе id топика для поста делается SQL-запрос, но вот проверки на пустоту возвращаемой строки не делали. Поставил.

Также Алексей не заполнял поле "последний раз редактировался пост", которое на большом форуме всё же важно. Допиливаю.

Как допилю окончательно - выложу скрипт.
Не ошибается тот, кто ничего не делает.
Mneznakomec
Новичок
Avatar
Reputation: 8
With us: 3 yaers 6 months

Post #20by Алексей » 13.08.2013, 09:58

Mneznakomec, я же говорил, что вы лучше меня разберётесь, потому что я уже "не в теме". Когда я допиливал скрипт после Dudarik и FryPpy, основное что меня интересовало - это преобразование сообщений в bb-коды. На эту задачу я потратил около 1 месяца. Кстати, сам код у bb-кодов, вроде у спойлера, я ещё тоже допиливал:
без заголовка
[spoiler]{TEXT}[/spoiler]
Code: Select all
<div class="uSpoilerClosed"><div class="uSpoilerButBl"><input type="button" class="uSpoilerButton" onclick="if ($($(this).parent().next('.uSpoilerText'))[0].style.display == 'none'){$($(this).parent().next('.uSpoilerText'))[0].style.display = '';$(this).val('Закрыть спойлер');$(this).parent().parent().attr('class','uSpoilerOpened');}else{$($(this).parent().next('.uSpoilerText'))[0].style.display = 'none';$(this).val('Открыть спойлер');$(this).parent().parent().attr('class','uSpoilerClosed');}" value="Открыть спойлер"/></div><div class="uSpoilerText" style="display:none;">{TEXT}</div></div>
с заголовком
[spoiler={INTTEXT}]{TEXT}[/spoiler]
Code: Select all
<div class="uSpoilerClosed"><div class="uSpoilerButBl"><input type="button" class="uSpoilerButton" onclick="if ($($(this).parent().next('.uSpoilerText'))[0].style.display == 'none'){$($(this).parent().next('.uSpoilerText'))[0].style.display = '';$(this).val('[-] {INTTEXT}');$(this).parent().parent().attr('class','uSpoilerOpened');}else{$($(this).parent().next('.uSpoilerText'))[0].style.display = 'none';$(this).val('[+] {INTTEXT}');$(this).parent().parent().attr('class','uSpoilerClosed');}" value="[+] {INTTEXT}"/></div><div class="uSpoilerText" style="display:none;">{TEXT}</div></div>
Но этот код всегда можно переписать в админке.

Я так понимаю появляется запись вида ...|12\|NNN|..., тогда скрипт экранированный символ \| должен воспринимать как символ, а не разделитель. И получим в одном поле значение вида "12|NNN".
Алексей M
Topic author, Бывалый
Avatar
Age: 36
Reputation: 19
With us: 4 yaers 5 months

Next

Forum name: Мастерская
Description: Только готовые решения! Статьи, заметки, моды и другие полезности для phpBBex 1.x и phpBB 3.0.x.

Quick reply


Enter the code exactly as it appears. All letters are case insensitive.
Confirmation code
:hi: :smile: :wink: :twisted: :sad: :evil: :smoke: :eh: :eek: :fie: :silenced: :razz: :oops: :help: :spy: :insane: :biggrin: :toothless: :ill: :nervious: :weirdface: :pray: :clap: :think: :boxing: :cyclop: :rambo: :zombie: :cry: View more smilies

   

Return to Мастерская