Уважаемые пользователи!
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.

Мод: topics popup (посоветуйте)

Форум для авторов модов для phpBB 2.0.x.
Joss

Мод: topics popup (посоветуйте)

Сообщение Joss »

Думаю оформить в виде мода: в viewforum.php и search.php при наведении мыши на тему топика, всплывает окошко с парой первых строчек первого сообщения. Можно посмотреть в http://forum.rojdenie.ru .

Т.к. MySql я не знаю и с php не знаком, хотелось бы спросить, верно ли я формирую запросы и обрабатываю строки. Может можно как-то оптимизировать?

Код используется такой:

Код: Выделить всё

$sql = "SELECT u.username, pt.post_text 
	FROM " . POSTS_TABLE . " p, " . USERS_TABLE . " u, " . POSTS_TEXT_TABLE . " pt 
	WHERE p.topic_id = $topic_id
		$limit_posts_time
		AND pt.post_id = p.post_id
		AND u.user_id = p.poster_id
	ORDER BY p.post_time $post_time_order
	LIMIT $start, 1";

if ( !($result = $db->sql_query($sql)) )
{
	message_die(GENERAL_ERROR, "Could not obtain post/user information.", '', __LINE__, __FILE__, $sql);
}

$postrow = $db->sql_fetchrow($result);

$im_popup_post = $postrow['post_text'];
$im_popup_user = $postrow['username']; 
Здесь достаем первое сообщение топика и его автора.

А здесь удаляем из строки лишние пробелы, пробелы в начале и конце строки, удаляем символы новой строки (кстати, нужно r и n обрабатывать или только r?), удаляем bbcode, удаляем смайлики (это уже от форума зависит, на этом форуме коды типа :sm00:) и удаляем кавычки. Потом добавляем многоточие для длинной строки (строки предварительно обрезаем до 200 (до первого последнего пробела) или, если влезает в 240 символов, то оставляем целиком).

Код: Выделить всё

if (strlen($im_popup_post) < 240)
{
    $im_popup_post = str_replace("\n", " ", $im_popup_post);
    $im_popup_post = str_replace("\r", " ", $im_popup_post);
}  
else
{
    $im_popup_post = substr($im_popup_post, 0, 200);
    $im_popup_post = str_replace("\n", " ", $im_popup_post);
    $im_popup_post = str_replace("\r", " ", $im_popup_post);
    $im_popup_post = substr($im_popup_post, 0, strrpos($im_popup_post, ' ') + 1) .' ...';
}
    
$im_popup_post = ereg_replace(":sm([0-9]{1,2}):", " ", $im_popup_post);    
$im_popup_post = ereg_replace("\[([[:print:]]+)\]", " ", $im_popup_post);
$im_popup_post = str_replace("\"", " ", $im_popup_post);
$im_popup_post = trim ( $im_popup_post );
while ( strpos($im_popup_post,'  ')!==false )
{
  $im_popup_post = str_replace('  ',' ',$im_popup_post);
}; 
Можно ли как то упростить запрос или же строки замены? Я тут ни бум-бум, что нашел в доках, как понял, так и записал. :) Заранее благодарен за ответы....
Аватара пользователя
Siava
Поддержка
Поддержка
Сообщения: 5284
Зарегистрирован: 19 лет 3 месяца
Откуда: Питер
Благодарил (а): 186 раз
Поблагодарили: 793 раза

Сообщение Siava »

Joss
Аналог вот ЭТОГО мода. Ваш кстати очень даже неплохо сделан, мне нравится, обязательно оформляйте в виде мода :D
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb 2.0.x 3.5.x)

Вернуться в «Для авторов (phpBB 2.0.x)»