Перейти к контенту
  • 0

"Первое непрочитанное": убрать редирект


arigoda

Вопрос

Предварительные извинения... как мог откладывал время обращения за советом сюда. но больше, кажется, не могу - перерыл, вроде бы, уже все... если у кого вопрос встанет "где конкретно это делается" - допишу нужную инфу. мне не хватает фактических знаний какая глобальная переменная форума за что отвечает... может быть, этой помощи будет предостаточно...

 

Исходная: на главной странице форума и на страницах разделов есть ссылки - "посмотреть первое (на страницах разелов она же обзывается "последнее") непрочитанное сообщение". Выглядит как ссылка с параметром "&getnewpost".

 

Проблема: эта ссылка - есть самый короткий путь к самым новым темам. не только для юзеров, но и, главное, - для поисковиков... они могли бы чрезвычайно быстро индексировать самые свежие темы. Но эта ссылка реально - редирект на страницу вида "адрес темы?#номерсообщения", поэтому поисковик не идет туда, редирект для него - тупик...

 

Что хотелось бы: иметь прямую ссылку.

 

Уже отброшенные варианты решения...

1. Включить поиск свежего поста непосредственно при вызове страниц форумов (в смысле в Boards.php и Forums.php)

Отвергнуто, т.к. каждый такой запрос - два обращения к базе, а форумов нехилое количество...

 

2. Включить в таблицу, например, ibf_posts новое поле - например, newpost и записывать его при прохождении Topics.php.

Отвергнуто, т.к. это строго индивидуально... база тут ни при чем....

 

ну вроде еще какие-то варианты были... nevermind...

 

Как я думал решить вопрос:

В скрипте определять номер последнего сообщения и на это месте втюхивать в код якорь типа #newpost.

ведь статичных-то страниц нет, у каждого - своя....

а на главной просто ставить везде ссылки на эту метку.

 

 

ну вот вроде примерно так.....

Ссылка на комментарий
Поделиться на других сайтах

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

  • 0
Можно при выводе топиков определять номер нового поста, но это тормозно будет. Думаю, это будет слишком "дорого", чтобы ради поисковика так изощеряться.
Ссылка на комментарий
Поделиться на других сайтах

  • 0

Song

стоп....

или я совсем ничего не понимаю, или именно так всегда и происходит...

то есть я просто не понял вот этой фразы:

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

 

сейчас, когда юзер тычет по этой ссылке, идет обращение к скрипту Topics.php вот к этой строке:

else if ($ibforums->input['view'] == 'getnewpost')

определяется номер последнего для ДАННОГО юзера поста в ДАННОЙ теме и в итоге формируется ссылка

$std->boink_it($ibforums->base_url."showtopic=".$this->topic['tid']."&st=$st".$pid);

и, кстати, вторым запросом там же определяется, какую собственно страницу надо вызывать, ежели их несколько...

вот так вроде:

$DB->query("SELECT COUNT(pid) as posts FROM ibf_posts WHERE topic_id='".$this->topic['tid']."' AND pid <= '".$post['pid']."'");
                                        
                                        $cposts = $DB->fetch_row();
                                        
                                        if ( (($cposts['posts']) % $ibforums->vars['display_max_posts']) == 0 )
                                        {
                                                $pages = ($cposts['posts']) / $ibforums->vars['display_max_posts'];
                                        }
                                        else
                                        {
                                                $number = ( ($cposts['posts']) / $ibforums->vars['display_max_posts'] );
                                                $pages = ceil( $number);
                                        }
                                        
                                        $st = ($pages - 1) * $ibforums->vars['display_max_posts'];
                                       

 

если опять же я не ошибаюсь, boink_it отвечает за редирект, то есть подменяется нажатая юзером ссылка на нужную.

после этого обычным образом генерится новая страница, в skin_topic.php всегда у каждого сообщения ставится якорь с его номером...

вот собственно и всё... после принта идет перекидывание на нужный пост...

 

как ты предлагаешь определить заранее номер последнего поста "при выводе топика", если страниц с топиками еще и НЕТ просто, ведь юзер на главной странице еще только находится...

если ты имеешь в виду - делать это при вызове ФОРУМА, то об этом я писал - отвергнуто сразу как бредовая идея подвесить сервер...

 

что касается "изощрений ради поисковика" - то:

1. это уже есть флейм, давай не будет уходить от темы.

2. если вопрос касается, к примеру, IBResource.Ru - думать об этом и в самом деле - изощрение и пустая трата времени, т.к. у сайта четкая и узкая целевая аудитория - не "форумы" (примерно 60000 интересующихся в яндексе ежемесячно), и даже не "форумы на базе IPB", а только "администраторы форумов на базе IPB"... а вот для всякого рода флеймилок, типа моего подопечного, поисковый трафик ой как важен... даже несмотря на то, что львиная доля посетителей - юзеры одного из крупнейших архивов mp3...

но это я уже опять не в тему пошел.

в общем, да - для описываемого форума этот вопрос принципиален.

Ссылка на комментарий
Поделиться на других сайтах

  • 0
как ты предлагаешь определить заранее номер последнего поста "при выводе топика", если страниц с топиками еще и НЕТ просто, ведь юзер на главной странице еще только находится... если ты имеешь в виду - делать это при вызове ФОРУМА, то об этом я писал - отвергнуто сразу как бредовая идея подвесить сервер...

ну и что? ведь это всё запросами находится + некоторые проверки. Можно написать функцию, которая будет всё это делать для любого топика уровнем даже раньше чем Topics.php. Только я ж говорю, что тормозно будет.

На главной странице у тебя есть последний линк темы, в который есть ответ. Тебе нужно перевести в формат, понятный поисковику.

Для этого у тебя всё есть: id раздела, id топика, тек. пользователь. Осталось только найти количество тем на страницу, количество постов в теме и всё остальное, чтобы запустить функцию из Topics.php чтобы она на лету переделала ссылку в ссылку вида entry. Что ж тут непонятного?

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Song

ну мы по сути про одно и то же говорим...

вызвать Topics.php или добавить к Boards.php...

это будут жуткие торомоза....

 

больше никаких вариантов не приходит на ум? у меня лично идеи кончились дня четыре назад...

 

ээх, ладно... nevermind..

Ссылка на комментарий
Поделиться на других сайтах

  • 0

theIggs

хм... идея!

 

говорю ж - не знаю я настолько хорошо, как вся эта система работает....

 

надо будет попробовать, спасибо.

Ссылка на комментарий
Поделиться на других сайтах

  • 0

В общем, решил я не выпендриваться с лишними запросами - все равно боты не понимают переходов на якори #...

Поэтому в случае если это бот - отдаю ему ссылку на начало темы... Да, он конечно не попадет на нужную страницу, но имхо, так все равно индексация быстрее будет... там-то по страницам переход прямой...

 

Короче, сделал так...

 

Boards.php

 

вместо

 

$forum_data['last_topic']  = "<a href='{$ibforums->base_url}showtopic={$forum_data['last_id']}&view=getnewpost' title='{$ibforums->lang['tt_gounread']}'>{$forum_data['last_title']}</a>";

 

добавил

 

if  ($ibforums->is_bot == 1) 
                                                {
                                                $forum_data['last_topic'] = "<a href='{$ibforums->base_url}showtopic={$forum_data['last_id']}' title='{$forum_data['last_title']}'>{$forum_data['last_title']}</a>";
                                                }
                                                else
                                                {
                                                $forum_data['last_topic'] = "<a href='{$ibforums->base_url}showtopic={$forum_data['last_id']}&view=getnewpost' title='{$ibforums->lang['tt_gounread']}'>{$forum_data['last_title']}</a>";
                                                }

 

 

Forums.php

 

вместо

 

$topic['go_new_post']  = "<a href='{$this->base_url}showtopic={$topic['tid']}&view=getnewpost'><{NEW_POST}></a>";

 

вставил

 

if  ($ibforums->is_bot == 1) 
                            {
                            $topic['go_new_post'] = "<a href='{$this->base_url}showtopic={$topic['tid']}'><{NEW_POST}></a>";
                            }
                            else
                            {
                            $topic['go_new_post'] = "<a href='{$this->base_url}showtopic={$topic['tid']}&view=getnewpost'><{NEW_POST}></a>";
                            }

 

 

или лучше проверять вот так?

 

if ( ( $ibforums->is_bot == 1 ) and ($ibforums->vars['spider_suit'] != "") )

 

 

Еще раз спасибо Song, theIggs за помощь!

Завтра посмотрю кешированную страницу в гугле и если все равно будут неправильные ссылки - напишу...

Ссылка на комментарий
Поделиться на других сайтах

  • 0
Поэтому в случае если это бот - отдаю ему ссылку на начало темы...

Отчего бы не поставить мод "просмотр всех страниц темы по ссылке Все" и отдавать боту именно такую ссылку? :D

Ссылка на комментарий
Поделиться на других сайтах

  • 0

theIggs

не видел такого мода, поищу...

...или, действительно, вообще ему версию для печати подсовывать :D

 

тут ведь вот еще такой момент...

вообще-то, по мнению владельцев поисковиков, против правил отдавать юзеру и роботу различные по виду страницы, различные ссылки ну и проч...

конечно, совершенно непонятно как они собираются это отслеживать, но все же сильно наглеть не хоцца ;))

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Все сообщения темы.

Страницы форума 1 2 3... 5 Все

 

...или, действительно, вообще ему версию для печати подсовывать

В версии для печати свои грабли, не забудь - там по умолчанию только 300 первых ответов отображается.

Кроме того, это уже серьёзная разница будет между тем, что видят пользователи и что видят боты. :)

 

вообще-то, по мнению владельцев поисковиков, против правил отдавать юзеру и роботу различные по виду страницы, различные ссылки ну и проч...

Да, концептуальный вопрос... :D Этой темы вообще бы не возникло, если бы боты нормально кушали те ссылки, которые используют обычные пользователи... ;):)

Ссылка на комментарий
Поделиться на других сайтах

  • 0

theIggs

За ссылки спасибо!

 

обо всем остальном - есть, между прочим, еще один, не менее концептуальный вопрос насчет этих гадких червячков-паучков.... они очень не любят читать больше примерно 100 кб текста, а тындекс и того не любит...

 

так что - 300 сообщений говоришь :D)) хехе, хоть их бы переснял - и то хорошо...

Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить на вопрос...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.