Перейти к публикации
View in the app

A better way to browse. Learn more.

Дизайн и модификация Invision Community

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

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

 

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

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

Опубликовано:

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

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

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

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

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

 

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

Опубликовано:
  • Автор

Ошибка 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

Опубликовано:
  • Автор

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

  • 1 год спустя...
Опубликовано:

Обнаружились ссылки на посты вида /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 - ид сообщения.

Изменено пользователем 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…

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

Опубликовано:
Но может есть уже готовая возможность???

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

Изменено пользователем 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 с готовыми редиректами для разных систем.

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

Сейчас на странице 0

  • Нет пользователей, просматривающих эту страницу.

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.