Пропустить

Текст сообщения во всплывающем окне

Идеи для расширения функциональности phpBB 2.0.x

Текст сообщения во всплывающем окне

Сообщение Coagulant » 14.01.2005 23:19

Сомненваюсь, что такой мод существует, но всё-таки: при наведении мышки на название топика должно появляться стандартное всплывающее окошко (аля тег alt для картинок) с первыми 50 символами начального поста.

Здесь можно посмотреть как это работает (правда там не phpbb)
Аватара пользователя
Coagulant
Former team member
 
Сообщения: 958
Зарегистрирован: 10.01.2005 20:43
Откуда: Москва
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Сообщение Siava » 15.01.2005 0:05

Coagulant
Есть такой мод, ставил его... но он малость грузит комп :roll:
(ссылку найду, скажу)

Добавлено спустя 2 минуты 7 секунд:

Вот
Правда его может доработать можно, так как по дефолту он показывает всё первое сообщение.
Генератор db_update-файлов для phpBB 2.0
Еще одно нарушение правил и будете забанены.
© Mr. Anderson
Аватара пользователя
Siava
phpBB 3.0.5
 
Сообщения: 2581
Зарегистрирован: 11.01.2005 15:29
Откуда: Питер
Благодарил (а): 1 раз.
Поблагодарили: 3 раз.

Сообщение Егор Наклоняев » 15.01.2005 1:06

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

Еще бы...
$sql = 'SELECT post_text FROM ' . POSTS_TEXT_TABLE . "
	 WHERE post_subject = '$topictitle' LIMIT 1";


Это извините слов не хватает. В цикле поиск по post_subject, которое не индексировано. Гы.

В общем, категорически НЕ РЕКОМЕНДУЮ даже пытаться ставить это МОД.
Аватара пользователя
Егор Наклоняев
phpBB 2.0.12
 
Сообщения: 404
Зарегистрирован: 25.10.2004 3:27
Откуда: оттуда
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Сообщение Coagulant » 15.01.2005 1:25

Siava
Спасибо за мод

но он малость грузит комп

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

Добавлено спустя 4 минуты 48 секунд:

Егор Наклоняев, я так и знал :? Может как-то его оптимизировать, форум vBulletin же работает с такой функцией (пусть движок другой, но всё же)
Аватара пользователя
Coagulant
Former team member
 
Сообщения: 958
Зарегистрирован: 10.01.2005 20:43
Откуда: Москва
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Сообщение Егор Наклоняев » 15.01.2005 2:22

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


Ну, во-первых, учимся пользоваться командой EXPLAIN в MY SQL.
table phpbb_posts_text
type ALL
possible_keys NULL
key NULL


Во вторых, можно просто считать время в микросекундах. Пример прямо в документации по PHP. Ставим перед запросом и после запроса и выводим результат. Результат можно вывести с помощью echo после обработки шаблона, например, так:
echo "<!-- ".$pagetime."-->";

Может как-то его оптимизировать

Оптимизировать то его можно и нужно, тем более, что он и ищет то совершенно не то. Достаточно просто внимательно глянуть на запрос.

Примерно похожий запрос генерится у меня в RSS, например, для случая когда в данной теме нужно вывести только первые сообщения и работает он гораздо быстрее. (ключи f= & t=1)

Т.о. нужно править основной запрос, получающий список тем данного форума, правильно связывая таблицы.
Аватара пользователя
Егор Наклоняев
phpBB 2.0.12
 
Сообщения: 404
Зарегистрирован: 25.10.2004 3:27
Откуда: оттуда
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Сообщение Coagulant » 16.01.2005 0:22

Посмотрел новую версию мода 1.0.2, там автор поправил sql запрос на вот такой:
$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";

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

Насчет, как определить время выполнения я знаю, просто изобретать велосипед влом. Вот мод Page Generation Time нашел, он выдает строчку "Page generation time: 0.4873s (PHP: 83% - SQL: 17%) - SQL queries: 14 - GZIP enabled - Debug on", как раз то, что я искал.

PS. У мода баг есть: он ббкоды из сообщения не вырезает, получается фигня навроде [b:c44453cs]текст
Аватара пользователя
Coagulant
Former team member
 
Сообщения: 958
Зарегистрирован: 10.01.2005 20:43
Откуда: Москва
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Сообщение Егор Наклоняев » 16.01.2005 3:32

Coagulant

Так, конечно, гораздо лучше. Я вот ради пробы написал другой вариант:

# 
#-----[ 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 недостающие строки. Но уже лень. Думаю, что идея уже понятна.
Основное преимущество - не увеличивается количество SQL запросов.

Правда, ощутимого выигрыша во времени у меня на форуме особого нет.

Так что можно ставить и тот МОД, разве что добавить строчку
$first_post=preg_replace('/\[\S+\:[0-9a-z]+\]/si', '', $first_post);
перед строкой
$first_post = str_replace('"', "''", $first_post);
Аватара пользователя
Егор Наклоняев
phpBB 2.0.12
 
Сообщения: 404
Зарегистрирован: 25.10.2004 3:27
Откуда: оттуда
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Сообщение Siava » 16.01.2005 15:16

Егор Наклоняев
То есть всё также притормаживает? :(
Генератор db_update-файлов для phpBB 2.0
Еще одно нарушение правил и будете забанены.
© Mr. Anderson
Аватара пользователя
Siava
phpBB 3.0.5
 
Сообщения: 2581
Зарегистрирован: 11.01.2005 15:29
Откуда: Питер
Благодарил (а): 1 раз.
Поблагодарили: 3 раз.

Сообщение Егор Наклоняев » 16.01.2005 18:38

То есть всё также притормаживает?

Нет, не также.
Естественно, что лишние SQL запросы тормозят время вывода страницы, а в данном случае их количество увеличится на количество тем. Но, поскольку, в отличие от предыдущей версии используется индексный поиск, то время задержки измеряется в сотых долях секунды на запрос. ИМХО, время вывода списка тем увеличится примерно на 0,1 - 0,2 сек.
Аватара пользователя
Егор Наклоняев
phpBB 2.0.12
 
Сообщения: 404
Зарегистрирован: 25.10.2004 3:27
Откуда: оттуда
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Сообщение Siava » 17.01.2005 1:46

Егор Наклоняев
проверил вашу версию, очень даже неплохо, отличная работа! :)
Генератор db_update-файлов для phpBB 2.0
Еще одно нарушение правил и будете забанены.
© Mr. Anderson
Аватара пользователя
Siava
phpBB 3.0.5
 
Сообщения: 2581
Зарегистрирован: 11.01.2005 15:29
Откуда: Питер
Благодарил (а): 1 раз.
Поблагодарили: 3 раз.

Сообщение Coagulant » 22.01.2005 0:48

Егор Наклоняев
Присоединяюсь к Siava, отлично написано! Протестировал дома: разницы во времени вообще не почувствовал.

Остался вопрос, как вырезать все бб-теги, а то остаются [url] и другие? (в регэкспах не силен)
Аватара пользователя
Coagulant
Former team member
 
Сообщения: 958
Зарегистрирован: 10.01.2005 20:43
Откуда: Москва
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Сообщение Егор Наклоняев » 22.01.2005 12:13

Остался вопрос, как вырезать все бб-теги, а то остаются [url] и другие? (в регэкспах не силен)

Может, так:
$first_post=preg_replace('/\[[^\s\]]+\:[0-9a-z]+\]/si', '', $first_post);
Вместо
$first_post=preg_replace('/\[\S+\:[0-9a-z]+\]/si', '', $first_post);
Аватара пользователя
Егор Наклоняев
phpBB 2.0.12
 
Сообщения: 404
Зарегистрирован: 25.10.2004 3:27
Откуда: оттуда
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Сообщение Coagulant » 22.01.2005 15:00

Новый вариант, конечно лучше, но он не вырезает теги
[url][/url] и [url=http://blablabla][/url]
Могу предложить добавить строку

$first_post=preg_replace('/\[[\/]?url[^\s\]]*\]/si', '', $first_post);

но уж очень громоздко получается.
Аватара пользователя
Coagulant
Former team member
 
Сообщения: 958
Зарегистрирован: 10.01.2005 20:43
Откуда: Москва
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Сообщение Siava » 22.01.2005 20:18

Кстати, у меня у объявлений не отображается всплывающее окошко :roll:
Генератор db_update-файлов для phpBB 2.0
Еще одно нарушение правил и будете забанены.
© Mr. Anderson
Аватара пользователя
Siava
phpBB 3.0.5
 
Сообщения: 2581
Зарегистрирован: 11.01.2005 15:29
Откуда: Питер
Благодарил (а): 1 раз.
Поблагодарили: 3 раз.

Сообщение Coagulant » 22.01.2005 20:32

Читаем внимательно:
Понятно, что для сообщений другого типа надо просто добавить в предшествующие 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 
Аватара пользователя
Coagulant
Former team member
 
Сообщения: 958
Зарегистрирован: 10.01.2005 20:43
Откуда: Москва
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

След.

Вернуться в Запросы модов для phpBB 2.0.x

 

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0

Бессрочный конкурс phpBB-ориентированных материалов
FastVPS — надёжный и доступный хостинг для phpBB
Место для вашей рекламы