Помогите пожалуйста разобраться, как сделать так, чтобы под общим списком друзей выводился список друзей которые онлайн?
Я находил на форуме темы схожей тематики но для instantcms 1.10.4 они к сожалению не подходят, подскажите пожалуйста можно ли как-то вывести друзей онлайн Вот как на картинке в профиле под основным списком друзей.
Заранее спасибо за помощь.
{if $cfg.on_line = $friend.is_online} ............................................ {/if} {/foreach}
{if $usr.friends} <div class="usr_friends_block usr_profile_block"> {if $usr.friends_total > 6} <div class="float_bar"> <a href="/users/{$usr.id}/friendlist.html">{$LANG.ALL_FRIENDS}</a> ({$usr.friends_total}) </div> {/if} <div class="usr_wall_header"> {if !$myprofile} {$LANG.USER_FRIENDS} {else} {$LANG.MY_FRIENDS} {/if} </div> {assign var="col" value="1"} <table width="" cellpadding="5" cellspacing="0" border="0" class="usr_friends_list" align="left"> {if $col==1}<tr>{/if} <td align="center" valign="top"> <div class="usr_friend_cell"> <div align="center"><a class="friend_link" href="{profile_url login=$friend.login}">{$friend.nickname}</a></div> <div align="center"><a href="{profile_url login=$friend.login}"><img border="0" class="usr_img_small" src="{$friend.avatar}" /></a></div> <div align="center">{$friend.flogdate}</div> </div> </td> {if $col==6} </tr> {assign var="col" value="1"} {else} {math equation="x + 1" x=$col assign="col"} {/if} {/foreach} {if $col>1}<td colspan="{math equation="x - 6 + 1" x=$col}"> </td></tr>{/if} </table> </div> {/if}
И после того как добавил конфиг, но при этом не добавил в профиль файл обертку то тоже самое белая страница, и отдельно без конфига если оборачиваешь то тоже белая страница, и если все вместе делаешь то тоже белая страница.
public static function getDefaultConfig() { 'sw_comm'=>1, 'sw_search'=>1, 'sw_forum'=>1, 'sw_photo'=>1, 'sw_wall'=>1, 'sw_blogs'=>1, 'sw_clubs'=>1, 'sw_feed'=>1, 'sw_awards'=>1, 'sw_board'=>1, 'sw_msg'=>1, 'sw_guest'=>1, 'sw_gifts'=>1, 'karmatime'=>1, 'karmaint'=>'DAY', 'photosize'=>0, 'watermark'=>1, 'smallw'=>64, 'medw'=>200, 'medh'=>500, 'sw_files'=>1, 'filessize'=>100, 'users_perpage'=>10, 'wall_perpage'=>10, 'filestype'=>'jpeg,gif,png,jpg,bmp,zip,rar,tar', 'deltime'=>6 ); return $cfg; }
instantcms.ru/users/files/download5349.html
{if $usr.friends} <div class="usr_friends_block usr_profile_block"> {if $usr.friends_total > 6} <div class="float_bar"> <a href="/users/{$usr.id}/friendlist.html">{$LANG.ALL_FRIENDS}</a> ({$usr.friends_total}) </div> {/if} <div class="usr_wall_header"> {if !$myprofile} {$LANG.USER_FRIENDS} {else} {$LANG.MY_FRIENDS} {/if} </div> {assign var="col" value="1"} <table width="" cellpadding="5" cellspacing="0" border="0" class="usr_friends_list" align="left"> {if $cfg.on_line = $friend.is_online} {if $col==1}<tr>{/if} <td align="center" valign="top"> <div class="usr_friend_cell"> <div align="center"><a class="friend_link" href="{profile_url login=$friend.login}">{$friend.nickname}</a></div> <div align="center"><a href="{profile_url login=$friend.login}"><img border="0" class="usr_img_small" src="{$friend.avatar}" /></a></div> <div align="center">{$friend.flogdate}</div> </div> </td> {if $col==6} </tr> {assign var="col" value="1"} {else} {math equation="x + 1" x=$col assign="col"} {/if} {/if} {/foreach} {if $col>1}<td colspan="{math equation="x - 6 + 1" x=$col}"> </td></tr>{/if} </table> </div> {/if}
Так же прописал в конфиге модели (/components/users/model.php) 'on_line'=>0,
В прошлый раз просто запятую указать по невнимательности забыл. Теперь только когда выше приведенный код редактируется где надо вставить{if $cfg.on_line = $friend.is_online}{/if} то после вставки выводит белую страницу.
Вот ф-ция getFriends() класса cmsUser (/core/classes/user.class.php)
// ============================================================================ // /** * Возвращает список друзей пользователя * и помещает в текущую сессию * @param int $user_id * @return array */ public static function getFriends($user_id=0){ // уже полученных друзей отдаем сразу return self::getInstance()->friends[$user_id]; } $is_me = (@$_SESSION['user']['id'] == $user_id); //Если список уже в сессии, возвращаем if ($is_me && self::sessionGet('friends') !== false) { foreach (self::sessionGet('friends') as $key=>$friend) { $friend['flogdate'] = self::getOnlineStatus($friend['id'], $friend['logdate']); $friends[$key] = $friend; } return $friends; } //иначе получаем список из базы, кладем в сессию и возвращаем $inDB = cmsDatabase::getInstance(); $sql = "SELECT CASE WHEN f.from_id = $user_id THEN f.to_id WHEN f.to_id = $user_id THEN f.from_id END AS id, u.nickname as nickname, u.login as login, u.is_deleted, u.status, u.logdate, p.imageurl FROM cms_user_friends f LEFT JOIN cms_users u ON u.id = CASE WHEN f.from_id = $user_id THEN f.to_id WHEN f.to_id = $user_id THEN f.from_id END INNER JOIN cms_user_profiles p ON p.user_id = u.id WHERE (from_id = $user_id OR to_id = $user_id) AND is_accepted =1 ORDER BY u.logdate DESC"; $result = $inDB->query($sql); if ($inDB->num_rows($result)){ while($friend = $inDB->fetch_assoc($result)){ $friend['avatar'] = self::getUserAvatarUrl($friend['id'], 'small', $friend['imageurl'], $friend['is_deleted']); $friend['is_online'] = self::isOnline($friend['id']); $friend['flogdate'] = self::getOnlineStatus($friend['id'], $friend['logdate']); $friends[$friend['id']] = $friend; } } // своих друзей кладем в сессию if ($is_me) { self::sessionPut('friends', $friends); } // Запоминаем список друзей пользователя self::getInstance()->friends[$user_id] = $friends; return $friends; } // ============================================================================ //
Но белый экран после добавления if стабильно.
Вывод ошибок пробовали прописать в frontend.php?
<?php
Также включите режим отладки в админке.