Количество друзей (hook)

Ребята, помогите правильно написать хук для вывода кол-ва друзей на произвольных страницах сайта (в моем случае, нужно вывести на главной). Спасибо!

Похожие статьи

  • Лента, активность и прочие подписки
    В движке на сегодняшний день такое число всяческих фич и нюансов, что я сам, порой, забываю, что в нем есть и как это хозяйство работает :) В этой статье речь пойдет о том, на что и как юзер может «оформить...
  • Передать объект через хук
    Добрый вечер, дорогие друзья. Сразу же прошу прощения за не очень хорошее поведение прошлым летом. Не передается объект $oTopic через хук. Можно пример, как это вообще сделать? Заранее спасибо.

2 комментария

+1
Получить и сразу отобразить число друзей прямо в шаблоне для текущего юзера можно так:
{if E::IsUser()}
    Друзей: {E::User_GetCountUsersFriend(E::User())}
{/if}

Можно и хуком сделать:
<?php
class HookFriendsCount extends Hook {
    /**
     * Регистрируем хуки
     */
    public function RegisterHook() {
        $this->AddHook('template_friends_count', 'TplFriendsCount', __CLASS__);
    }

    /**
     * Обработка хука
     *
     * @return string
     */
    public function TplFriendsCount() {
        return E::IsUser() ? E::User_GetCountUsersFriend(E::User()) : '0';
    }
}
А в шаблоне в нужное место ставим:
{if E::IsUser()}
    Друзей: {hook run=friends_count}
{/if}

Либо, если уж совсем по всем правилам делать, делаем маленький файл шаблона (напр., friends_count.tpl:
{if E::IsUser()}
    Друзей: {$iFriendsCount}
{/if}
А обработчик хука записываем так:
public function TplFriendsCount() {
    $iFriendsCount = E::IsUser() ? E::User_GetCountUsersFriend(E::User()) : '0';
    $this->Viewer_Assign('iFriendsCount ', $iFriendsCount );
    return $this->Viewer_Fetch('friends_count.tpl');
}

Но важно понимать, что запрос числа друзей — это обращение к базе. Поэтому если речь про то, что это надо вывести в одном месте страницы для текущего юзера — то это нормально. А если, например, на странице выводится большой список юзеров и для каждого нужно вывести число друзей, то это уже лучше писать плагин, чтоб оптимизировать число запросов.
0
Отлично, то что нужно!
Но важно понимать, что запрос числа друзей — это обращение к базе.
Нет — это именно для одного, конкретного юзера. Модифицированный аналог сайдбара в Профиле, только на другой странице. Спасибо!
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.