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

[1.x.x]Topic Hints для IPB v1.3


urisoft

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

пост от 14 декабря (мод установлен вчера 13) в опросе не показываеться начало последнего сообщения ... в более старых опросах, где то примерно через один работает.
Ссылка на комментарий
Поделиться на других сайтах

  • Ответы 230
  • Создана
  • Последний ответ

Лучшие авторы в этой теме

Лучшие авторы в этой теме

Dekker

пост от 14 декабря (мод установлен вчера 13) в опросе не показываеться начало последнего сообщения ... в более старых опросах, где то примерно через один работает.

А ты можешь посмотреть точную дату поста и что написано в поле last_post таблицы _topics.

В phpMyAdmin:

SELECT post_date FROM ***posts WHERE pid=Х

SELECT last_post FROM ***topics WHERE tid=X

Иксы заменить на номер поста и номер топика. Звездочки на префикс.

Они одинаковые ?

А это только в опросе или в обычных темах тоже так ? :D

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

первый запрос post_date = 1103011070

второй запрос last_post = 1103011427

 

это что касаеться именно этого опроса.

 

в теме в которой все отображаеться нормально :

 

первый запрос post_date = 1103040942

второй запрос last_post = 1103040942

 

почему не совпало в случае опроса ?

 

 

 

 

Добавлено в [mergetime]1103041859[/mergetime]

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

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

Dekker

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

Угу. :D

При указании в настройках "Поднимать тему при голосовании" (Allow votes to bump a topic?) в last_post пишется дата-время последнего голосования.

Видимо надо дополнительное поле в табличку добавлять ;)

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

urisoft

Несколько пожеланий.

1) ИМХО с таким запросом будут тормоза. Ты джойнишь несколько раз самую большую таблицу на форуме! Лучше через предзапрос + помещение рез-тов в массив

 

2) Если джойнишь ту же таблицу используй INNER JOIN. Работает быстрее

 

3) Как-то бы

lp.post_date=t.last_post

по-другому надо сделать ИМХО.

Но что-то пока другое в голову не приходит.

Лучше по п. 1 и тогда там через ORDER BY .. DESC LIMIT 1 или через max(pid)

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

Song

1) ИМХО с таким запросом будут тормоза. Ты джойнишь несколько раз самую большую таблицу на форуме! Лучше через предзапрос + помещение рез-тов в массив

Не должно быть тормозным. Запрос в индексы хорошо вписывается. Однако подумаем как улучшить... Надо будет потестить, постах так на 100-200 тыс.

 

3) Как-то бы
lp.post_date=t.last_post

по-другому надо сделать ИМХО.

Но что-то пока другое в голову не приходит.

Кстати так по эксплайну работает индекс и просмотр только одной записи. НО. Я смотрел только в 2.0.

 

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

В общем потестим на куче записей тогда и решение найдется как лучше сделать.

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

urisoft

у меня с одним-то лишним запросом тормоза уже чувствовались.

Т.е. стандартный JOIN и + JOIN, который предусматривался твои модом в раннем исполнении.

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

  • 5 недель спустя...

Поставил мод 1.3 на форуме 1.3

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

 

В чем может быть проблема? Форум тут http://owebmoney.ru/cafe/index.php?showforum=9

 

Заранее спасибо!

 

 

UPDATE

Нашел причину. В hints.js необходимо вот это

 

contents = "<table border=\'0\' cellspacing=\'0\' class=\'hintshead\'><tr><td style=\'padding:1px\'><b>" + head + "</b></td></tr><tr><td style=\'padding:1px\'><table border=\'0\' cellspacing=\'0\' class=\'hintstext\'><tr><td style=\'padding:3px\'>" + text + "</td></tr></table></td></tr></table>";

 

заменить на вот это

 

contents = "<table border=\'0\' cellspacing=\'0\'><tr><td style=\'padding:1px\' class=\'hintshead\'><b>" + head + "</b></td></tr><tr><td style=\'padding:1px\'><table border=\'0\' cellspacing=\'0\'><tr><td style=\'padding:3px\' class=\'hintstext\'>" + text + "</td></tr></table></td></tr></table>";

 

т.е. классы прописать к ячейкам, а не к таблицам

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

у нас сервер - машина слабенькая - селерон 400мгц

потянет она этот мод без тормозов или нет?

Добавлено в [mergetime]1105734448[/mergetime]

что надо добавить, чтобы и на главной странице форума, при наведении на ссылку "последнее обновление" тоже вылазило окошечко с последним непрочитанным?

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

сделал все, как указано!!

 

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

 

 

в чем дело???

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

  • 1 месяц спустя...
  • 4 недели спустя...

У меня что-то на главной странице форуме не отображается этот хинт для последнего сообщения.

Так и должно быть? или я что-то намудрил? или же надо напостить новых мессаг из-за этого прикола с разницой в 1 сек?

Сенкс[1111711877:1111713228]И еще...

нашёл толи глюк - толи не доработку -

вообщем в хинте отображаются коды форума

и т.п.

низзя как-то от них избавиться?

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

  • 2 недели спустя...

Чего-то я не понял....Что тута надо сделать?

Пункт 3: Добавляем поле в базу

// В phpMyAdmin выполнить нижеследующий запрос:

// В запросе заменить '0' на '1' если хотите, чтобы по умолчанию

// хинты показывались, иначе пользователь ничего не увидит пока

// не включит соответствующую опцию в своих настройках.

// В запросе ibf_ заменить на ваш префикс.

// *************************************************************

 

ALTER TABLE `ibf_members` ADD `view_hints` TINYINT( 1 ) DEFAULT '0';

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

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

Тоесть текст этот есть, а вот селекта, с выбороб "да\нет" нету :D Что делать:?

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

А окно с этим первым сообщением можно расположить выше?

Тогда обычная адресная ссылка браузера не будет с ней пересекаться.

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

так как сделать для 1.3.1 что бы хинт последнего сообщения отображался на главной странице форума? :D
Ссылка на комментарий
Поделиться на других сайтах

Ребята, сколько человек поставило этот мод - а кто-нить реально обращал внимание на код?

 

	function process_hints($post)
{
 global $ibforums;

 if ($ibforums->member['id'] != 0 and $ibforums->member['view_hints'] != 1)
 {
	 return "";
 }

 $post = preg_replace( "'<br>|<br \/>'i", "\n", $post );
 $post = preg_replace( "/\r/", "", $post );
 $post = strip_tags($post);

 $post = preg_replace("'(&|&|&)'i","&",$post);
 $post = preg_replace("'(<|<|<)'i","<",$post);
 $post = preg_replace("'(>|>|>)'i",">",$post);
 $post = preg_replace("'("|"|")'i","\"",$post);
 $post = preg_replace("'('|')'i","'",$post);
 $post = preg_replace("'(!|!)'i","!",$post);
 $post = preg_replace("'(|)'i","|",$post);
 $post = preg_replace("'($|$)'i","$",$post);
 $post = preg_replace("'(\|\)'i","\\",$post);

 // remove empty line
 $post = preg_replace( "'\n(\s*)\n'i", "\n", $post );

 // remove first empty line
 $post = preg_replace( "'^(\s*)(\n+)'i", "", $post );

 $g_add = false;
 // максимум 5 новых строк
 $split_array = explode("\n",$post);
 if (count($split_array) > 5) $g_add = true;
 $post = implode("\n",array_slice($split_array,0,5));

 // обрезаем строку (150 символов максимум)
 if (strlen($post) > 150)
 {
	 $g_add = true;
	 $post = substr( $post, 0, 150);
 }

 $post = str_replace("<","<",$post);
 $post = str_replace(">",">",$post);
 $post = str_replace("\"",""",$post);
 $post = str_replace("'","'",$post);
 $post = str_replace("!","!",$post);
 $post = str_replace("|","|",$post);
 $post = str_replace("$","$",$post);
 $post = str_replace("\\","\",$post);
 $post = str_replace("&","&",$post);
 $post = str_replace("\n","<br />", $post );

 if ($g_add) $post .= "...»»";

 return $post;
}

 

Сколько же реплейсов происходит для каждого поста :)

Это же просто тихий ужас ;)

~25 тем на странице = 50 вызовов этого монстра каждый раз - О СЕРВАКЕ кто-нить подумал???

Не проще ли добавить в таблицу постов поле stripped_post ( VARCHAR(255) ) и при создании сообщения единоразово его подчищать и урезать!!!

 

Это не камень в огород автора - ему РЕСПЕКТ!!! за такой мод, но... :D

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


×
×
  • Создать...

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

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