Аватары пользователей в ленте активности InstantCMS

Аватары пользователей в ленте активности InstantCMS

03.04.2013

Пользователям соц. сетей привычна картина, когда в ленте рядом с никами и действиями пользователей отображается аватар.

По моему мнению в instantCMS это просто недоработка, которую легко устранить.

Изначально все выглядит примерно так:

Картинка

Первое что нужно сделать — это извлечь данные о аватаре из базы данных. За получение данных их базы в модуле Actions отвечает файл actions.class.php, который находится в папке /core/classes/.

В нем находим функцию getActionsLog(), которая отвечает за получение массива событий для ленты активности.

Теперь немного поправим запрос:

$sql = "SELECT log.id as id,
log.object as object,
log.object_url as object_url,
log.target as target,
log.target_url as target_url,
log.pubdate as pubdate,
log.description as description,
a.message as message,
a.name as name,
u.nickname as user_nickname,
u.login as user_login, //в этом месте не забываем поставить запятую
p.imageurl as avatar  //добавляем эту строку, дабы получить название изображения
 
FROM adn_actions_log log
LEFT JOIN adn_actions a ON a.id = log.action_id AND a.is_visible = 1
LEFT JOIN adn_users u ON u.id = log.user_id
LEFT JOIN adn_user_profiles p ON p.user_id = log.user_id //добавляем эту строку, чтобы выбрать 
         //из таблицы adn_user_profiles нужные нам поля 
         //(в частности imageurl)
 
WHERE {$this->where}
 
ORDER BY log.id DESC
";

Ниже в этой же функции ищем строки:

$action['user_url'] = cmsUser::getProfileURL($action['user_login']);
$action['pubdate'] = cmsCore::dateDiffNow($action['pubdate']);

Добавляем после них нашу переменную:

$action['avatar'] = $action['avatar'] ? '/images/users/avatars/small/'.$action['avatar'] : '/images/users/avatars/small/nopic.jpg';

Этой строкой мы присваиваем переменной $action['avatar'] путь к каталогу с маленькими аватарами пользователей или же дефолтной картинкой nopic, если пользователь не загружал аватар.

Остается только вывести картинку в модуле mod_actions. Например так:

<img src="{$action.avatar}" alt="{$action.user_nickname}"/>

Я вставил эту строку здесь:

<div class="action_title">   
   <img src="{$action.avatar}" alt="{$action.user_nickname}" class="small_avatar"/>
   <span class="action_desc">
   <a href="{$action.user_url}" class="action_user">{$action.user_nickname}</a>

Вот что получилось в итоге:

Картинка


Узнал сам - поделись с друзьями!

Возврат к списку