Текст сообщения во всплывающем окне
-
- Former team member
- Сообщения: 955
- Стаж: 20 лет 3 месяца
- Откуда: Москва
Текст сообщения во всплывающем окне
Сомненваюсь, что такой мод существует, но всё-таки: при наведении мышки на название топика должно появляться стандартное всплывающее окошко (аля тег alt для картинок) с первыми 50 символами начального поста.
Здесь можно посмотреть как это работает (правда там не phpbb)
Здесь можно посмотреть как это работает (правда там не phpbb)
-
- Поддержка
- Сообщения: 5426
- Стаж: 20 лет 3 месяца
- Откуда: Питер
- Благодарил (а): 177 раз
- Поблагодарили: 749 раз
Coagulant
Есть такой мод, ставил его... но он малость грузит комп
(ссылку найду, скажу)
Добавлено спустя 2 минуты 7 секунд:
Вот
Правда его может доработать можно, так как по дефолту он показывает всё первое сообщение.
Есть такой мод, ставил его... но он малость грузит комп

(ссылку найду, скажу)
Добавлено спустя 2 минуты 7 секунд:
Вот
Правда его может доработать можно, так как по дефолту он показывает всё первое сообщение.
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb2.0.x 3.5.x)
Ты очистил кеш? © Sheer
https://siava.ru (phpbb
-
- phpBB 2.0.4
- Сообщения: 404
- Стаж: 20 лет 6 месяцев
- Откуда: оттуда
Еще бы...Есть такой мод, ставил его... но он малость грузит комп
Код: Выделить всё
$sql = 'SELECT post_text FROM ' . POSTS_TEXT_TABLE . "
WHERE post_subject = '$topictitle' LIMIT 1";
В общем, категорически НЕ РЕКОМЕНДУЮ даже пытаться ставить это МОД.
-
- Former team member
- Сообщения: 955
- Стаж: 20 лет 3 месяца
- Откуда: Москва
Siava
Спасибо за мод
Добавлено спустя 4 минуты 48 секунд:
Егор Наклоняев, я так и знал
Может как-то его оптимизировать, форум vBulletin же работает с такой функцией (пусть движок другой, но всё же)
Спасибо за мод
как лучше всего, определить, насколько снижает скорость загрузки форума тот или иной мод? вроде где-то видел мод "время генерации станицы", или можно лучше?но он малость грузит комп

Добавлено спустя 4 минуты 48 секунд:
Егор Наклоняев, я так и знал

-
- phpBB 2.0.4
- Сообщения: 404
- Стаж: 20 лет 6 месяцев
- Откуда: оттуда
Ну, во-первых, учимся пользоваться командой EXPLAIN в MY SQL.как лучше всего, определить, насколько снижает скорость загрузки форума тот или иной мод? вроде где-то видел мод "время генерации станицы", или можно лучше?
table phpbb_posts_text
type ALL
possible_keys NULL
key NULL
Во вторых, можно просто считать время в микросекундах. Пример прямо в документации по PHP. Ставим перед запросом и после запроса и выводим результат. Результат можно вывести с помощью echo после обработки шаблона, например, так:
echo "<!-- ".$pagetime."-->";
Оптимизировать то его можно и нужно, тем более, что он и ищет то совершенно не то. Достаточно просто внимательно глянуть на запрос.Может как-то его оптимизировать
Примерно похожий запрос генерится у меня в RSS, например, для случая когда в данной теме нужно вывести только первые сообщения и работает он гораздо быстрее. (ключи f= & t=1)
Т.о. нужно править основной запрос, получающий список тем данного форума, правильно связывая таблицы.
-
- Former team member
- Сообщения: 955
- Стаж: 20 лет 3 месяца
- Откуда: Москва
Посмотрел новую версию мода 1.0.2, там автор поправил sql запрос на вот такой:
Я не спец в sql, поэтому определить, насколько удачно составлен запрос, не могу.
Насчет, как определить время выполнения я знаю, просто изобретать велосипед влом. Вот мод Page Generation Time нашел, он выдает строчку "Page generation time: 0.4873s (PHP: 83% - SQL: 17%) - SQL queries: 14 - GZIP enabled - Debug on", как раз то, что я искал.
PS. У мода баг есть: он ббкоды из сообщения не вырезает, получается фигня навроде [b:c44453cs]текст
Код: Выделить всё
$sql = "SELECT p.*, pt.post_text, pt.post_id
FROM " . POSTS_TABLE . " p, " . POSTS_TEXT_TABLE . " pt
WHERE p.topic_id = $topic_id
AND pt.post_id = p.post_id
ORDER BY p.post_time
LIMIT 1";
Насчет, как определить время выполнения я знаю, просто изобретать велосипед влом. Вот мод Page Generation Time нашел, он выдает строчку "Page generation time: 0.4873s (PHP: 83% - SQL: 17%) - SQL queries: 14 - GZIP enabled - Debug on", как раз то, что я искал.
PS. У мода баг есть: он ббкоды из сообщения не вырезает, получается фигня навроде [b:c44453cs]текст
-
- phpBB 2.0.4
- Сообщения: 404
- Стаж: 20 лет 6 месяцев
- Откуда: оттуда
Coagulant
Так, конечно, гораздо лучше. Я вот ради пробы написал другой вариант:
Проверил, работает, но только для основных сообщений. Понятно, что для сообщений другого типа надо просто добавить в предшествующие SQL недостающие строки. Но уже лень. Думаю, что идея уже понятна.
Основное преимущество - не увеличивается количество SQL запросов.
Правда, ощутимого выигрыша во времени у меня на форуме особого нет.
Так что можно ставить и тот МОД, разве что добавить строчку
$first_post=preg_replace('/\[\S+\:[0-9a-z]+\]/si', '', $first_post);
перед строкой
$first_post = str_replace('"', "''", $first_post);
Так, конечно, гораздо лучше. Я вот ради пробы написал другой вариант:
Код: Выделить всё
#
#-----[ OPEN ]------------------------------------------
#
viewforum.php
#
#-----[ FIND ]------------------------------------------------
#
//
// Grab all the basic data (all topics except announcements)
// for this forum
//
$sql = "SELECT t.*, u.username
#
#-----[ IN-LINE FIND ]----------------------------------------
#
, p2.post_time
#
#-----[ IN-LINE AFTER, ADD ]----------------------------------
#
, pt.post_text
#
#----[ FIND ]------------------------------------------
#
FROM " . TOPICS_TABLE . " t, " . USERS_TABLE . " u, " .
#
#-----[ IN-LINE FIND ]----------------------------------------
#
. USERS_TABLE . " u2
#
#-----[ IN-LINE AFTER, ADD ]----------------------------------
#
,". POSTS_TEXT_TABLE . " as pt
#
#-----[ FIND ]------------------------------------------------
#
AND p.post_id = t.topic_first_post_id
#
#-----[ AFTER, ADD ]------------------------------------------
#
AND p.post_id = pt.post_id
#
#-----[ FIND ]------------------------------------------------
#
$template->assign_block_vars('topicrow', array(
#
#-----[ BEFORE, ADD ]-----------------------------------------
#
// BEGIN display first message
$chr_limit=500; //limit char count in message
$first_post = $topic_rowset[$i]['post_text'];
$first_post=preg_replace('/\[\S+\:[0-9a-z]+\]/si', '', $first_post);
$first_post = str_replace('"', "'", $first_post);
if (strlen($first_post) > $chr_limit)
{
$first_post = substr($first_post, 0, $chr_limit);
$first_post .= '...';
}
// END display first message
#
#----[ FIND ]------------------------------------------
#
'FIRST_POST_TIME' => $first_post_time,
#
#-----[ BEFORE, ADD ]------------------------------------------
#
'FIRST_POST' => $first_post,
#
#-----[ OPEN ]------------------------------------------
#
templates/subsilver/viewforum_body.tpl
#
#----[ FIND ]------------------------------------------
#
<a href="{topicrow.U_VIEW_TOPIC}" class="topictitle"
#
#-----[ IN-LINE FIND ]----------------------------------------
#
<a href="{topicrow.U_VIEW_TOPIC}" class="topictitle"
#
#-----[ IN-LINE AFTER, ADD ]----------------------------------
#
title="{topicrow.FIRST_POST}"
#
#-----[ SAVE/CLOSE ALL FILES ]------------------------------------------
#
# EoM
Основное преимущество - не увеличивается количество SQL запросов.
Правда, ощутимого выигрыша во времени у меня на форуме особого нет.
Так что можно ставить и тот МОД, разве что добавить строчку
$first_post=preg_replace('/\[\S+\:[0-9a-z]+\]/si', '', $first_post);
перед строкой
$first_post = str_replace('"', "''", $first_post);
-
- Поддержка
- Сообщения: 5426
- Стаж: 20 лет 3 месяца
- Откуда: Питер
- Благодарил (а): 177 раз
- Поблагодарили: 749 раз
Егор Наклоняев
То есть всё также притормаживает?
То есть всё также притормаживает?

Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb2.0.x 3.5.x)
Ты очистил кеш? © Sheer
https://siava.ru (phpbb
-
- phpBB 2.0.4
- Сообщения: 404
- Стаж: 20 лет 6 месяцев
- Откуда: оттуда
Нет, не также.То есть всё также притормаживает?
Естественно, что лишние SQL запросы тормозят время вывода страницы, а в данном случае их количество увеличится на количество тем. Но, поскольку, в отличие от предыдущей версии используется индексный поиск, то время задержки измеряется в сотых долях секунды на запрос. ИМХО, время вывода списка тем увеличится примерно на 0,1 - 0,2 сек.
-
- Поддержка
- Сообщения: 5426
- Стаж: 20 лет 3 месяца
- Откуда: Питер
- Благодарил (а): 177 раз
- Поблагодарили: 749 раз
Егор Наклоняев
проверил вашу версию, очень даже неплохо, отличная работа!
проверил вашу версию, очень даже неплохо, отличная работа!

Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb2.0.x 3.5.x)
Ты очистил кеш? © Sheer
https://siava.ru (phpbb
-
- Former team member
- Сообщения: 955
- Стаж: 20 лет 3 месяца
- Откуда: Москва
-
- phpBB 2.0.4
- Сообщения: 404
- Стаж: 20 лет 6 месяцев
- Откуда: оттуда
-
- Former team member
- Сообщения: 955
- Стаж: 20 лет 3 месяца
- Откуда: Москва
Новый вариант, конечно лучше, но он не вырезает теги
Могу предложить добавить строку
$first_post=preg_replace('/\[[\/]?url[^\s\]]*\]/si', '', $first_post);
но уж очень громоздко получается.
Код: Выделить всё
[url][/url] и [url=http://blablabla][/url]
$first_post=preg_replace('/\[[\/]?url[^\s\]]*\]/si', '', $first_post);
но уж очень громоздко получается.
-
- Поддержка
- Сообщения: 5426
- Стаж: 20 лет 3 месяца
- Откуда: Питер
- Благодарил (а): 177 раз
- Поблагодарили: 749 раз
Кстати, у меня у объявлений не отображается всплывающее окошко 

Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb2.0.x 3.5.x)
Ты очистил кеш? © Sheer
https://siava.ru (phpbb
-
- Former team member
- Сообщения: 955
- Стаж: 20 лет 3 месяца
- Откуда: Москва
Читаем внимательно:
Я вот написал, работает вроде:Понятно, что для сообщений другого типа надо просто добавить в предшествующие SQL недостающие строки. Но уже лень.
Код: Выделить всё
#
#-----[ OPEN ]------------------------------------------
#
viewforum.php
#
#-----[ FIND ]------------------------------------------------
#
//
// All announcement data, this keeps announcements
// on each viewforum page ...
//
$sql = "SELECT t.*, u.username,
#
#-----[ IN-LINE FIND ]----------------------------------------
#
, p.post_username
#
#-----[ IN-LINE AFTER, ADD ]----------------------------------
#
, pt.post_text
#
#----[ FIND ]------------------------------------------
#
FROM " . TOPICS_TABLE . " t, " . USERS_TABLE . " u, " .
#
#-----[ IN-LINE FIND ]----------------------------------------
#
. USERS_TABLE . " u2
#
#-----[ IN-LINE AFTER, ADD ]----------------------------------
#
,". POSTS_TEXT_TABLE . " as pt
#
#-----[ FIND ]------------------------------------------------
#
AND p.post_id = t.topic_last_post_id
#
#-----[ AFTER, ADD ]------------------------------------------
#
AND t.topic_first_post_id = pt.post_id