kanv1s Posted February 23, 2015 Share Posted February 23, 2015 Добрый день. Ситуация следующая:После слияния форума на 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 More sharing options...
siv1987 Posted February 23, 2015 Share Posted February 23, 2015 В файле viewtopic.php ссылка явно другого формата:Это редирект на пост. Для простых ссылок тем редирект находится выше. А что конкретно не получается настроить? Если старый форум находился в папке /forum/ а прежний находится в корне домена, то нужно:- либо создать папку /forum/ и закинуть туда файлы, - либо загрузить файлы в корне форума и в .htaccess после RewriteEngine On добавить реврайт: RewriteRule ^forum/(memberlist|viewforum|viewtopic)\.php $1.php [L] Link to comment Share on other sites More sharing options...
kanv1s Posted February 23, 2015 Author Share Posted February 23, 2015 Ошибка 500. /forum/viewtopic.php?f=37&t=7183 - переходит по такой, а нужно что бы переходил по /viewtopic.php?f=37&t=7183в htaccess тыкался, не получалось, ошибка 500 Link to comment Share on other sites More sharing options...
siv1987 Posted February 23, 2015 Share Posted February 23, 2015 в 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 More sharing options...
kanv1s Posted February 23, 2015 Author Share Posted February 23, 2015 Работает. Большое спасибо!! Link to comment Share on other sites More sharing options...
f2065 Posted January 14, 2017 Share Posted January 14, 2017 Обнаружились ссылки на посты вида /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 More sharing options...
Strategius Posted January 14, 2017 Share Posted January 14, 2017 (edited) А вот как для IPB сделать такую же ссылку - чтобы она вывела топик с постом, не зная номер топика?В IPB 3 в стандартном ЧПУ для вывода ссылок на посты в теме используются ссылки вида: forum.ru/topic/1-tema/?p=22Где 1 - ид темы, tema - транслитное название темы, 22 - ид сообщения. Edited January 14, 2017 by Strategius Link to comment Share on other sites More sharing options...
f2065 Posted January 15, 2017 Share Posted January 15, 2017 Где 1 - ид темы, Ну вот про это и вопрос - умеет ли IPB находить ID темы самостоятельно?Ведь по идее ID постов уникальны… Link to comment Share on other sites More sharing options...
Strategius Posted January 15, 2017 Share Posted January 15, 2017 В смысле сам умеет? Ссылку на пост можно получить, нажав на кнопку Поделиться в углу поста. Вид ЧПУ также при желании можно поменять. Link to comment Share on other sites More sharing options...
f2065 Posted January 15, 2017 Share Posted January 15, 2017 Ссылку на пост можно получить, нажав на кнопку Поделиться в углу поста.Ну а найти то как этот самый пост???Вот есть у меня только номер поста. Номера топика - нету!Как мне написать в адресной строке браузера номер поста, чтобы IPBoard вывел топик и этот пост? Link to comment Share on other sites More sharing options...
Strategius Posted January 15, 2017 Share Posted January 15, 2017 Как мне написать в адресной строке браузера номер поста, чтобы 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 More sharing options...
f2065 Posted January 15, 2017 Share Posted January 15, 2017 Никак, и не понимаю, зачем это нужно. Это нужно затем что ссылки с внешних ресурсов были сделаны во времена когда у нас было 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 More sharing options...
Strategius Posted January 15, 2017 Share Posted January 15, 2017 (edited) Но может есть уже готовая возможность???Не встречал, но вообще идея интересная. Edited January 15, 2017 by Strategius Link to comment Share on other sites More sharing options...
f2065 Posted January 15, 2017 Share Posted January 15, 2017 Написал вот 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 More sharing options...
newbie Posted January 16, 2017 Share Posted January 16, 2017 А вот как для IPB сделать такую же ссылку - чтобы она вывела топик с постом, не зная номер топика? /index.php?app=forums&module=forums§ion=findpost&pid=PIDПримерhttp://ipbskins.ru/forum/index.php?app=forums&module=forums§ion=findpost&pid=100856 1 Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now