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);