Jump to content
Дизайн и модификация Invision Power Board IPBSkinsBETA
Search In
  • More options...
Find results that contain...
Find results in...
Sign in to follow this  
tolik777

После обновления на 4.1.х не работают ссылки с #entry внутри темы

Recommended Posts

Наконец таки закончился недельный пересчет и мой форум полностью обновился на последнюю версию 4.1.х.

 

И столкнулся с очень неприятной проблемой: старый ссылки, ведущие на какое-то сообщение внутри темы вида forum.net/index.php?showtopic=15213&st=20#entry117513 перестали работать! Т.е. при клике ведут на первое сообщение темы.

 

А это очень и очень плохо, т.к. у меня форум более 2 млн. сообщений и все упорядочено, куча FAQ, путеводителей и др. ссылок ведущие на конкретные сообщения в теме.

 

Думал пересчет сообщений исправит, но нет....

 

Что делать?

Share this post


Link to post
Share on other sites

#entry это указатель внутри страницы, на сервере он не передается. В новой версии якорь сообщения имеет новое название #comment-{id}. В бд заменить старый тег на новый и дополнительно написать скрипт на js который будет заменять в урле для перехода с внешних источников. А вот по параметру запроса st он должен редиректить на страницу page.

 

Некоторые проблемы старых ссылок обсуждалось тут http://ipbskins.ru/forum/topic14157.html

Share this post


Link to post
Share on other sites

Проблема этих ссылок showtopic=15213&st=20#entry117513 в том, что сначала идет редирект на чпу, потом проверяется наличие параметра st.

Тут я вижу несколько вариантов:

 

I. Заменить в базе данных #entry на &p=, тогда форум сделает автоматическое преобразование ссылки в /topic/{tid}-{title}/?do=findComment&comment={pid}.

Не требует правки файлов, но не будет работать для ссылок с внешних ресурсов и подходит только для старых ссылок которые были без чпу.

 

II. Отредактировать функцию convertLegacyParameters в \applications\forums\Application.php добавив проверку параметра st и конвертацию его в page.

Выше:

 

		if ( isset( \IPS\Request::i()->p ) or isset( \IPS\Request::i()->findpost ) )

Добавить:

 

		if( \IPS\Request::i()->st )
		{
			\IPS\Request::i()->page = floor( intval( \IPS\Request::i()->st ) / $topic::getCommentsPerPage() ) + 1;
		}

Такая правка будет работать для всех ссылок в том числе и с внешних ресурсов, но требует правки файла и остается решить вопрос с хештегом #entry который нужно заменить в js на #comment- для поддержке ссылок с внешних ресурсов, либо добавить в шаблоне новый тег с этим якорем.

 

JS скрипт для замены хештега #entry на #comment

 

if(document.location.hash){
var match = document.location.hash.substr(1).match(/^entry(\d+)$/);
if(match[1]){
	document.location.hash = '#comment-'+match[1];
}
}

  • Upvote 1

Share this post


Link to post
Share on other sites

По st внес правку! Перекидывает теперь на нужную страницу.

А вот насчет entry не очень понял в каких именно шаблонах нужно править?

Share this post


Link to post
Share on other sites

А вот насчет entry не очень понял в каких именно шаблонах нужно править?

%Тема% -> forums -> topics -> postContainer

 

После

<a id='comment-{$comment->$idField}'></a>

Добавить

<a id='entry{$comment->$idField}'></a>

Share this post


Link to post
Share on other sites

Спасибо!

Сделал все же замену в БД (затронуло 7 тыс. постов). Правда половина ссылок все равно куда-то не туда ведут, полагаю, что из-за ST. Что-то все равно сбилось после перестроения форума

Share this post


Link to post
Share on other sites

Куда ведут? Надо еще учитывать старое и новое количество сообщении на одной странице, для совместимости параметра st или page оно должно быть одинаковым. В противном случае следовало заменить #entry на параметр &p= для поиска сообщения в теме.

Share this post


Link to post
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
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...