Открываем ajax.php и находим:
[PHP]
'view_post' => array('guest'),
[/PHP]
ниже вставляем:
[PHP]
'new_messages' => array('guest'),
[/PHP]
находим
[PHP]
function sitemap()
{
    require(AJAX_DIR .'sitemap.php');
}
[/PHP]
после вставляем
[PHP]
    function new_messages()
    {
        global $bb_cfg;

        if(!$bb_cfg['new_messages']['enabled']) $this->ajax_die('Модуль отключён.');

        $type = (int) $this->request['type'];
        $limit = $type * $bb_cfg['new_messages']['limit'];
        if (!$sql = CACHE('bb_cache')->get('new_messages_limit'.$limit.''))
        {
            $sql = DB()->fetch_rowset("SELECT
		  p.post_id,
		  t.*,
		  p.*,
		  h.post_html, IF(h.post_html IS NULL, pt.post_text, NULL) AS post_text,
		  IF(p.poster_id = " . GUEST_UID . ", p.post_username, u.username) AS username, u.user_id, u.user_rank, u.avatar_ext_id, u.user_opt
		FROM       " . BB_POSTS . " p
		INNER JOIN " . BB_TOPICS . "  t   ON(t.topic_id = p.topic_id)
		INNER JOIN " . BB_POSTS_TEXT . " pt ON(pt.post_id = p.post_id)
		 LEFT JOIN " . BB_POSTS_HTML . " h ON(h.post_id = pt.post_id)
		INNER JOIN " . BB_USERS . "      u ON(u.user_id = p.poster_id)
		WHERE
		      " . TIMENOW . " > p.post_time
		      AND   p.post_id <> t.topic_id
		      AND   p.poster_id <> " . BOT_UID . "
        ORDER BY p.post_id DESC
		LIMIT $limit,{$bb_cfg['new_messages']['limit']}");
            CACHE('bb_cache')->set('new_messages_limit'.$limit.'', $sql, $bb_cfg['new_messages']['cache']*60);
        }

        $message = ($type) ? '<h3><span onclick="ajax.new_messages('.($type - 1).'); return false;" href="#" title="Предыдущие '.$bb_cfg['new_messages']['limit'].' сообщений" class="clickable floatL" id="submit_chat">«</span> <span style="float: center;">Новые сообщения</span> <span title="Следующие '.$bb_cfg['new_messages']['limit'].' сообщений" id="submit_chat" class="clickable floatR" href="#" onclick="ajax.new_messages('.($type + 1).'); return false;">&raquo;</span><br></h3>' : '<h3><span style="float: center;">Новые сообщения</span><span title="Следующие '.$bb_cfg['new_messages']['limit'].' сообщений" id="submit_chat" class="clickable floatR" href="#" onclick="ajax.new_messages('.($type + 1).'); return false;">&raquo;</span></h3>';

        $message .= '<div class="avatarssList"><ul>';
        foreach($sql as $row)
        {
            $message .= '<li rel="viewpost.php?id='. $row['post_id'] .'" class="jsTip" jtip="true" name="'. $row['topic_title'] .'" id="post_'. $row['post_id'] .'">';
            $message .= '<a class="avatarss" data-avatarhtml="true" href="'. PROFILE_URL . $row['user_id'] .'">'.str_replace('<img', '<img height="32" width="32"', get_avatar($row['user_id'], $row['avatar_ext_id'], !bf($row['user_opt'], 'user_opt', 'dis_avatar'))).'</a>';
            $message .= '<a href="'. POST_URL . $row['post_id'] .'">'.wbr(str_short($row['topic_title'], 20)).'</a>';
            $message .= '<div class="userTitle">';
            $message .= ''.profile_url(array('user_id' => $row['user_id'], 'username' => $row['username'], 'user_rank' => $row['user_rank'])).' ответил <abbr class="DateTime">'.bb_date($row['post_time']).'</abbr>';
            $message .= '</div></li>';
        }
        $message .= '</ul></div></div>';

        $this->response['html'] = $message;
    }
[/PHP]
открыть index.php и найти:
[PHP]
// Latest news
if ($bb_cfg['show_latest_news'])
[/PHP]
перед вставить:
[PHP]
//New messages
if($bb_cfg['new_messages']['enabled'])
{
    if (!$sql = CACHE('bb_cache')->get('new_messages_limit0'))
    {
        $sql = DB()->fetch_rowset("SELECT
		  p.post_id,
		  t.*,
		  p.*,
		  h.post_html, IF(h.post_html IS NULL, pt.post_text, NULL) AS post_text,
		  IF(p.poster_id = " . GUEST_UID . ", p.post_username, u.username) AS username, u.user_id, u.user_rank, u.avatar_ext_id, u.user_opt
		FROM       " . BB_POSTS . " p
		INNER JOIN " . BB_TOPICS . "  t   ON(t.topic_id = p.topic_id)
		INNER JOIN " . BB_POSTS_TEXT . " pt ON(pt.post_id = p.post_id)
		 LEFT JOIN " . BB_POSTS_HTML . " h ON(h.post_id = pt.post_id)
		INNER JOIN " . BB_USERS . "      u ON(u.user_id = p.poster_id)
		WHERE
		      " . TIMENOW . " > p.post_time
		      AND   p.poster_id <> " . BOT_UID . "
        ORDER BY p.post_id DESC
		LIMIT 0,{$bb_cfg['new_messages']['limit']}");
        CACHE('bb_cache')->set('new_messages_limit0', $sql, $bb_cfg['new_messages']['cache']*60);
    }

    foreach($sql as $row)
    {
        $message = '<li rel="viewpost.php?id='. $row['post_id'] .'" class="jsTip" jtip="true" name="'. $row['topic_title'] .'" id="post_'. $row['post_id'] .'">';
        $message .= '<a class="avatarss" data-avatarhtml="true" href="'. PROFILE_URL . $row['user_id'] .'">'.str_replace('<img', '<img height="32" width="32"', get_avatar($row['user_id'], $row['avatar_ext_id'], !bf($row['user_opt'], 'user_opt', 'dis_avatar'))).'</a>';
        $message .= '<a href="'. POST_URL . $row['post_id'] .'">'.wbr(str_short($row['topic_title'], 20)).'</a>';
        $message .= '<div class="userTitle">';
        $message .= ''.profile_url(array('user_id' => $row['user_id'], 'username' => $row['username'], 'user_rank' => $row['user_rank'])).' ответил <abbr class="DateTime">'.bb_date($row['post_time']).'</abbr>';
        $message .= '</div></li>';
        $template->assign_block_vars('messages', array(
            'POST' => $message,
        ));
    }
}
[/PHP]
открыть config.php и в конец вставить:
[PHP]
$bb_cfg['new_messages'] = array(
    'enabled'  => true,
    'limit'    => 10,
    'cache'    => 5, //время указывается в минутах
);
[/PHP]

открыть page_footer.tpl и найти:
[HTML]
<!-- IF HTML_SIDEBAR_2 -->
[/HTML]
перед вставить:
[HTML]
<!-- IF $bb_cfg['new_messages']['enabled'] -->
            <link rel="stylesheet" href="{TPL_DIR}/jstip.css?v={$bb_cfg['css_ver']}" type="text/css">
            <script type="text/javascript" src="{SITE_URL}styles/js/jstip.js"></script>
            <script type="text/javascript">
                ajax.new_messages = function($type) {
                    ajax.exec({
                        action : 'new_messages',
                        type : $type
                    });
                };
                ajax.callback.new_messages = function(data) {
                    $('#new_messages').html(data.html);
                };
            </script>
            <div class="section">
                <div class="secondaryContent" id="new_messages">
                    <h3>Новые сообщения <span title="Перелистнуть сообщения" id="submit_chat" class="clickable floatR" href="#" onclick="ajax.new_messages(1); return false;">&raquo;</span></h3>
                    <div class="avatarssList">
                        <ul>
                            <!-- BEGIN messages -->
                            {messages.POST}
                            <!-- END messages -->
                        </ul>
                    </div>
                </div>
            </div>
            <!-- ENDIF -->
[/HTML]

открыть main.css и найти:
[HTML]
#sidebar2-wrap {}
[/HTML]
после вставить:
[HTML]
            abbr, acronym {
                border: 0;
                font-variant: normal;
            }
			#sidebar2 .avatarssList li {
                margin: 5px 0;
                overflow: hidden;
                zoom: 1;
            }
            #sidebar2 .avatarssList .avatarss {
                margin-right: 5px;
                float: left;
                width: 32px;
                height: 32px;
                width: auto;
                height: auto;
            }
            #sidebar2 .avatarssList .userTitle {

                color: rgb(150,150,150);
            }
            .avatarss img, .avatarss .img, .avatarssCropper {
                background-color: rgb(252,252,255);
                padding: 2px;
                border: 1px solid #a5cae4;
                -webkit-border-radius: 4px;
                -moz-border-radius: 4px;
                -khtml-border-radius: 4px;
                border-radius: 4px;
            }
[/HTML]