Skip to content

IPS Converters - Links - phpBB - разные ссылки [IPB 3.4.6]

Добрый день.

 

Ситуация следующая:

После слияния форума на phpbb 3.0.9 c действующим форумов на ipb 3.4.6 никак не получается перенастроить ссылки с ipb форума на phpbb

 

Есть такая ссылка: /forum/viewtopic.php?f=37&t=1852

Тема на ipb доступна по ссылке: /topic/9131

 

В файле viewtopic.php ссылка явно другого формата:

	$row = $DB->buildAndFetch( array( 'select' => 'ipb_id', 'from' => 'conv_link_posts', 'where' => "foreign_id=".intval(ipsRegistry::$request['p'])." AND type='posts' AND app='".$app['app_id']."'" ) );
$topic = $DB->buildAndFetch( array( 'select' => 'topic_id', 'from' => 'posts', 'where' => "pid='".$row['ipb_id']."'" ) );

$registry->getClass('output')->silentRedirect(IPB_URL.'/index.php?showtopic='.$topic['topic_id'].'&view=findpost&p='.$row['ipb_id'], '', TRUE);

 

Были предположения, что дяденькам писавшим это виднее, а всему виной url'ы самого форума (/index.html - IP Content, а сам форум доступен по адресу /index), но стандартизация не помогла.

 

Можете что нибудь посоветовать?

Featured Replies

В файле viewtopic.php ссылка явно другого формата:

Это редирект на пост. Для простых ссылок тем редирект находится выше.

А что конкретно не получается настроить? Если старый форум находился в папке /forum/ а прежний находится в корне домена, то нужно:

- либо создать папку /forum/ и закинуть туда файлы,

- либо загрузить файлы в корне форума и в .htaccess после RewriteEngine On добавить реврайт:

 

RewriteRule ^forum/(memberlist|viewforum|viewtopic)\.php $1.php [L]

  • Author

Ошибка 500.

 

/forum/viewtopic.php?f=37&t=7183 - переходит по такой, а нужно что бы переходил по /viewtopic.php?f=37&t=7183

в htaccess тыкался, не получалось, ошибка 500

в htaccess тыкался, не получалось, ошибка 500

Реврайт немного подправил. Попробуйте еще раз.

 

 

/forum/viewtopic.php?f=37&t=7183 - переходит по такой, а нужно что бы переходил по /viewtopic.php?f=37&t=7183

Так по какой, с /форумом/ или без? Если без форума, тогда ничего добавлять в htaccess не нужно, просто закиньте файлы в корень форума и настройте config.php

  • Author

Работает. Большое спасибо!!

  • 1 year later...

Обнаружились ссылки на посты вида /viewtopic.php?p=XXXXX#XXXXX - очевидно, для какой-то старой phpBB это было.

 

Но как эта ссылка должна выглядеть для IPB 3.4.x ?

 

/index.php?showtopic=YYYYY&p=XXXXX - не подходит поскольку YYYYY взять негде.

 

phpBB очевидно умела находить топик по одному только посту из него.

А вот как для IPB сделать такую же ссылку - чтобы она вывела топик с постом, не зная номер топика?

А вот как для IPB сделать такую же ссылку - чтобы она вывела топик с постом, не зная номер топика?

В IPB 3 в стандартном ЧПУ для вывода ссылок на посты в теме используются ссылки вида:

 

forum.ru/topic/1-tema/?p=22

Где 1 - ид темы, tema - транслитное название темы, 22 - ид сообщения.

Edited by Strategius

Где 1 - ид темы,
Ну вот про это и вопрос - умеет ли IPB находить ID темы самостоятельно?

Ведь по идее ID постов уникальны…

В смысле сам умеет? Ссылку на пост можно получить, нажав на кнопку Поделиться в углу поста. Вид ЧПУ также при желании можно поменять.

Ссылку на пост можно получить, нажав на кнопку Поделиться в углу поста.
Ну а найти то как этот самый пост???

Вот есть у меня только номер поста. Номера топика - нету!

Как мне написать в адресной строке браузера номер поста, чтобы IPBoard вывел топик и этот пост?

Как мне написать в адресной строке браузера номер поста, чтобы IPBoard вывел топик и этот пост?

Никак, и не понимаю, зачем это нужно. Можно упростить вид ЧПУ, чтобы ссылка на тему приняла вид forum.ru/topic/ID

 

admin/applications/forum/extensions/furlTemplates.php

 

Найти

 

'out'           => array( '#showtopic=(.+?)(\#|&|$)#i', 'topic/$1-#{__title__}/$2' ),
'in'            => array( 'regex'   => '#^/topic/(\d+?)-#i',

Заменить на

 

'out'           => array( '#showtopic=(.+?)(\#|&|$)#i', 'topic/$1/$2' ),
'in'            => array( 'regex'   => '#^/topic/(\d+?)(/|$)#i',

Обновить кеш FURL.

Никак, и не понимаю, зачем это нужно.
Это нужно затем что ссылки с внешних ресурсов были сделаны во времена когда у нас было phpBB.

phpBB спокойно сама находит и раздел и топик по одному только ID поста.

Можно вот написать /viewtopic.php?p=XXXXX - и всё будет отлично.

Хотя обычно пишут полную запись - /viewtopic.php?t=YYY&p=XXXXX, но это не обязательно.

 

IPB ведь тоже как и phpBB использует уникальные ID постов для всей базы.

Руками покопавшись в базе - можно узнать по номеру поста - номер топика: SELECT `topic_id` FROM `ibf_posts` WHERE `pid` = XXXXX;

Можно в принципе написать PHP-скрипт для поиска номера топика и формирования команды showtopic…

Но может есть уже готовая возможность???

Но может есть уже готовая возможность???

Не встречал, но вообще идея интересная.

Edited by Strategius

Написал вот php-скрипт для имитации /viewtopic.php?p=XXXXX

Но всё-же у меня такое чувство что должен быть какой-то штатный ключ для адресной строки в IPB.

 

<?php

// wrapper viewtopic2showtopic v1.0 © f2065
// Выводит топик с постом по номеру указанного поста.
// 
// Это надо для случаев когда номер поста известен, а номер топика - нет.
// Например для работы со старыми ссылками от phpBB, viewtopic.php?p=XXXXX (без номеров топика).
//
// По сути - скрипт ссылку вида /viewtopic.php?p=XXXXX перенаправляет в /index.php?showtopic=YYYYY&p=XXXXX

include("conf_global.php");

$pid = (int)$_GET['p'];

$dbconn = mysql_connect($INFO['sql_host'], $INFO['sql_user'], $INFO['sql_pass']);
$db = mysql_select_db($INFO['sql_database']);
$object_tid = mysql_query('SELECT topic_id FROM '.$INFO['sql_tbl_prefix'].'posts WHERE pid = '.$pid);
$tid = mysql_result($object_tid, 0);
mysql_close($dbconn);

if (!$tid)
{
header('Content-type: text/html; charset=UTF-8');
echo "Post ID ".$pid." not found in database (or other error).<br>";
echo "<a href='javascript:history.back();'>Return to back page</a>, <a href='index.php'>Goto main page</a>";
}
else
{
header("Location: index.php?showtopic=".$tid."&p=".$pid);
}
exit;

?>

Более того, в дистрибутиве конвертера есть папка Tools с готовыми редиректами для разных систем.

Create an account or sign in to comment

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.