Перейти к контенту
  • 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
А в чём проблема делать запрос в Boards.php только в том случае, если $ibforums->is_bot == 1?
Ссылка на комментарий
Поделиться на других сайтах

  • 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)) хехе, хоть их бы переснял - и то хорошо...

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

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

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

Гость
Ответить на вопрос...

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

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

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

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

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

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

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

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