Jump to content

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


kanv1s
 Share

Recommended Posts

Добрый день.

 

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

После слияния форума на 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), но стандартизация не помогла.

 

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

Link to comment
Share on other sites

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

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

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

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

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

 

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

Link to comment
Share on other sites

Ошибка 500.

 

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

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

Link to comment
Share on other sites

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

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

 

 

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

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

Link to comment
Share on other sites

  • 1 year later...

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

 

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

 

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

 

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

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

Link to comment
Share on other sites

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

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

 

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

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

Edited by Strategius
Link to comment
Share on other sites

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

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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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

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

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

Link to comment
Share on other sites

Как мне написать в адресной строке браузера номер поста, чтобы 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.

Link to comment
Share on other sites

Никак, и не понимаю, зачем это нужно.
Это нужно затем что ссылки с внешних ресурсов были сделаны во времена когда у нас было 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…

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

Link to comment
Share on other sites

Написал вот 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;

?>

Link to comment
Share on other sites

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

/index.php?app=forums&module=forums&section=findpost&pid=PID

Пример

http://ipbskins.ru/forum/index.php?app=forums&module=forums&section=findpost&pid=100856

  • Upvote 1
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...