Итак вернемся к выпадающей подсказке, при наведении мышкой на активных пользователей в статистике.
Имена активных пользователей и HTML сущьности ссылок в панели статистики формируются в файле func_boardstats.php, поэтому изменения придется делать именно в нем, но все же создадим дополнительный шаблон в группе skin_boards (главная страница) в котором будем рисовать нужную нам рамку в HTML.
Создайте новый шаблон:<ul><li><b>Панель администратора > ВНЕШНИЙ ВИД > Опции (в строке "Test") > Изменить HTML шаблоны > skin_boards (главная страница)</b></li><li>Нажмите <b>Добавить шаблон</b></li><li>Введите в поле "Название шаблона": <b>splash_user_row</b></li><li>Введите в поле "Входящие переменные": <b>$data</b></li><li>Нажмите <b>Продолжить...</b></li><li>Вставьте шаблон:<!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1--><div style='float:left'><b>{$data['members_display_name']}</b><br>{$data['avatar']}<br>{$data['member_rank_img']}<br>{$data['member_number']}<br>{$data['member_group']} {$data['title']}<br>{$data['member_joined']}<br>{$data['member_location']}Пол: {$data['_pp_gender_text']}<br>{$data['member_posts']}</div><div style='float:right; margin-left:5px; border:1px solid #000'><img src='{$data['pp_main_photo']}'></div><!--c2--></div><!--ec2--></li><li>Нажмите <b>Сохранить шаблон</b></li></ul>Теперь визуальную структуру HTML всплывающего окна, вы сможете корректировать на свой вкус именно в этом шаблоне, запомните где он находится:
<b>Панель администратора > ВНЕШНИЙ ВИД > Опции (в строке "Test") > Изменить HTML шаблоны > skin_boards (главная страница) > splash_user_row </b>
Теперь займемся файлом func_boardstats.php
Данные для формирования ссылки, читаются из таблицы БД, но их в данном случае недостаточно, так как в формировании ссылки учавствуют только Имя пользователя, время его последней активности, ID пользователя и группа пользователя. Этих данных недостаточно, поэтому изменим SQL запрос и получим все данные которые нам требуются:
Аватар пользователя:
Название группы пользователя:
E-mail пользователя:
Дату регистрации пользователя:
Количество сообщений пользователя:
Местожительства пользователя: (если указанно)
Дату рождения пользователя: (если указанно)
Время и дату последнего сообщения:
Время и дату последнего визита:
Время последней активности на сайте:
Количество просмотров профиля:
Фото пользователя и другую всякую хрень...
Откройте файл <b>sources/lib/func_boardstats.php</b><ul><li>Найдите и удалите участок кода:<!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1-->if ( $this->ipsclass->member['id'] )
{
$rows = array( $ar_time.'.'.md5(microtime()) => array( 'id' => 0,
'login_type' => substr($this->ipsclass->member['login_anonymous'],0, 1),
'running_time' => $ar_time,
'member_id' => $this->ipsclass->member['id'],
'member_name' => $this->ipsclass->member['members_display_name'],
'member_group' => $this->ipsclass->member['mgroup'] ) );
}<!--c2--></div><!--ec2-->
</li><li>Найдите участок кода: (он будет сразу после удаленного участка выше)<!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1-->$this->ipsclass->DB->simple_construct( array( 'select' => 'id, member_id, member_name, login_type, running_time, member_group',
'from' => 'sessions',
'where' => "running_time > $time",
//'order' => "running_time DESC" // Sort in PHP to avoid filesort in SQL
)  

;<!--c2--></div><!--ec2-->
</li><li>Замените следующим кодом:<!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1-->$this->ipsclass->DB->simple_construct(array( 'select' => 'm1.id, m1.member_id, m1.member_name, m1.login_type, m1.running_time, m1.member_group',
'from' => array('sessions' => 'm1'),
'where' => "m1.running_time > $time",
'add_join' => array(0 => array( 'select' => 'm2.id, m2.email, m2.hide_email, m2.joined, m2.posts, m2.title, m2.last_post, m2.view_avs, m2.bday_day, m2.bday_month, m2.bday_year, m2.last_visit, m2.last_activity, m2.members_display_name, m2.members_profile_views',
'from' => array( 'members' => 'm2' ),
'where' => 'm2.id=m1.member_id',
'type' => 'left'),
1 => array( 'select' => 'm3.aim_name, m3.icq_number, m3.website, m3.yahoo, m3.msnname, m3.location, m3.avatar_location, m3.avatar_size, m3.avatar_type',
'from' => array( 'member_extra' => 'm3' ),
'where' => 'm3.id=m1.member_id',
'type' => 'left'),
2 => array( 'select' => 'm4.pp_main_photo, m4.pp_thumb_photo, m4.pp_gender',
'from' => array( 'profile_portal ' => 'm4' ),
'where' => 'm4.pp_member_id=m1.member_id',
'type' => 'left'))));<!--c2--></div><!--ec2-->
</li><li>Найдите далее:<!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1-->foreach ( $rows as $result )
{
$last_date = $this->ipsclass->get_time( $result['running_time'] );<!--c2--></div><!--ec2-->
</li><li>Замените на:<!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1-->foreach ( $rows as $result )
{
$last_date = $this->ipsclass->get_time( $result['running_time'] );
if (!is_array($this->ipsclass->cache['ranks'])) {
$this->ipsclass->cache['ranks'] = array();
$this->ipsclass->DB->simple_construct(array('select' => 'id, title, pips, posts', 'from' => 'titles', 'order' => "posts DESC"));
$this->ipsclass->DB->simple_exec();
while ($i = $this->ipsclass->DB->fetch_row()) $this->ipsclass->cache['ranks'][$i['id']] = array('TITLE' => $i['title'], 'PIPS' => $i['pips'], 'POSTS' => $i['posts']);
$this->ipsclass->update_cache(array('name' => 'ranks', 'array' => 1, 'deletefirst' => 1));
}
$this->ipsclass->load_template('skin_topic');
$member = $this->ipsclass->parse_member($result);
$output = $this->ipsclass->compiled_templates['skin_boards']->splash_user_row($member);
if (is_array($this->ipsclass->skin['_macros'])) {
foreach($this->ipsclass->skin['_macros'] as $row) {
if ($row['macro_value'] != "") $output = str_replace( "<{".$row['macro_value']."}>", $row['macro_replace'], $output);
}
}
$output = str_replace("'", "\'", $output);
$output = str_replace("\"", "\'", $output);<!--c2--></div><!--ec2-->
</li><li>Найдите далее:<!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1-->$active['NAMES'] .= "<a href='{$this->ipsclass->base_url}showuser={$result['member_id']}' title='$last_date'>{$result['member_name']}</a>*{$this->sep_char} \n";<!--c2--></div><!--ec2-->
</li><li>Замените на:<!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1-->$active['NAMES'] .= "<a href='{$this->ipsclass->base_url}showuser={$member['member_id']}' onMouseOver=\"Tip('".$output."')\">{$result['member_name']}</a>{$this->sep_char} \n";<!--c2--></div><!--ec2-->
</li><li>Найдите далее:<!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1-->$active['NAMES'] .= "<a href='{$this->ipsclass->base_url}showuser={$result['member_id']}' title='$last_date'>{$result['member_name']}</a>*{$this->sep_char} \n";<!--c2--></div><!--ec2-->
</li><li>Замените на:<!--c1--><div class='codetop'>Код</div><div class='codemain'><!--ec1-->$active['NAMES'] .= "<a href='{$this->ipsclass->base_url}showuser={$member['member_id']}' onMouseOver=\"Tip('".$output."')\">{$result['member_name']}</a>{$this->sep_char} \n";<!--c2--></div><!--ec2-->
</li><li>Сохраните файл sources/lib/func_boardstats.php</li></ul>Теперь обновите страницу форума и наведите мышкой на любого активного пользователя в панели статистики (внизу форума). Если у вы внимательно читали описание и правильно выполнили все изменения, то у вас должно появиться всплывающее окошко с аватаром, фото и некоторыми другими данными пользователя.
Вот так выглядят такие всплывающие окна:
<div align="center">
Посмотреть вложение 1576</div>