Кнопка «Подписаться» [Решено]
Сейчас неудобно подписываться на активность пользователей. Для того чтобы начать следить за кем-либо нужно запомнить его логин, перейти на страницу «Активность» и начать его вводить в соответствующем поле и после этого выбрать нужного пользователя в появившемся списке.
Гораздо лучше реализовать все как в популярных социальных сетях (twitter, dribbbler, vkontakte): добавить кнопку подписаться прямо в профиль пользователя.
Как это сделать сказал пользователь Chiffa, за что ему большая благодарность =))
Добавить после:
Добавить после:
Гораздо лучше реализовать все как в популярных социальных сетях (twitter, dribbbler, vkontakte): добавить кнопку подписаться прямо в профиль пользователя.
Как это сделать сказал пользователь Chiffa, за что ему большая благодарность =))
classes\actions\ActionProfile.class.php:
Функция EventShutdown, добавить можно в самый конец:
$this->oUserCurrent=$this->User_GetUserCurrent();
if ($this->oUserCurrent && $aUserSubscribes=$this->Userfeed_getUserSubscribes($this->oUserCurrent->getId())) {
$this->Viewer_Assign('isSubscribe',isset($aUserSubscribes['users'][$this->oUserProfile->getId()]) ? 1 : 0);
$this->Lang_AddLangJs(array('stream_subscribe','stream_unsubscribe'));
}
templates\language\russian.php
Добавить:'stream_unsubscribe' => 'Отписаться',
'stream_subscribe' => 'Подписаться',
templates\skin\new-query\actions\ActionProfile\sidebar.tpl
Найти:<li><a href="{router page='talk'}add/?talk_users={$oUserProfile->getLogin()}">{$aLang.user_write_prvmsg}</a></li>
Добавить после:
{if $isSubscribe}
<li><a id="subscribe-button" href="#" onclick="return ls.user.unsubscribe(this)" rel="{$oUserProfile->getId()}">{$aLang.stream_unsubscribe}</a></li>
{else}
<li><a id="subscribe-button" href="#" onclick="return ls.user.subscribe(this)" rel="{$oUserProfile->getId()}">{$aLang.stream_subscribe}</a></li>
{/if}
templates\skin\new-query\js\friends.js
Найти:ls.user = (function ($) {
Добавить после:
this.subscribe = function(obj) {
obj=$(obj);
var idUser=obj.attr('rel');
ls.ajax(aRouter['feed']+'subscribe/', {'type':'users', 'id':idUser}, function(data) {
if (data.bStateError) {
ls.msg.error(data.sMsgTitle,data.sMsg);
} else {
ls.msg.notice(data.sMsgTitle,data.sMsg);
obj.replaceWith('<a id="subscribe-button" href="#" onclick="return ls.user.unsubscribe(this)" rel="'+idUser+'">'+ls.lang.get('stream_unsubscribe')+'</a>');
}
});
return false;
};
this.unsubscribe = function(obj) {
obj=$(obj);
var idUser=obj.attr('rel');
ls.ajax(aRouter['feed']+'unsubscribe', {'type':'users', 'id':idUser}, function(data) {
if (data.bStateError) {
ls.msg.error(data.sMsgTitle,data.sMsg);
} else {
ls.msg.notice(data.sMsgTitle,data.sMsg);
obj.replaceWith('<a id="subscribe-button" href="#" onclick="return ls.user.subscribe(this)" rel="'+idUser+'">'+ls.lang.get('stream_subscribe')+'</a>');
}
});
return false;
};
18 комментариев
Можете подсказать как это реализовать?
поинтересуйтесь у автора.
Да и топик я опубликовал в «Предложения и пожелания», т.к. думаю не мне одному интересна подобная доработка и лучше если все будет так по стандарту в LS.
Подписка нужна сюда livestreet.ru/feed/.
Это будет логичнее. Если я нажал кнопку «Подписаться» (или ее можно назвать «Читать»), то это значит я хочу читать топики этого пользователя на сайте. А вот если я добавил его в друзья, то это означает что я хочу получать уведомления об активности этого пользователя на сайте (т.е. как это сейчас уже работает с добавлением в друзья).
classes\actions\ActionProfile.class.php:
Функция EventShutdown, добавить можно в самый конец:templates\language\russian.php
Добавить:templates\skin\new-query\actions\ActionProfile\sidebar.tpl
Найти:Добавить после:
templates\skin\new-query\js\friends.js
Найти:Добавить после:
При заходе на страницу профиля выдает ошибку:
В чем может быть ошибка? Может я неправильно код в ActionProfile.class.php добавил?
У меня сейчас выглядит все так:
перед новыми строчками
или если stream, то как происходит подписка? подписка на все пункты из списка (на комменатрии, топики и тп)?
Подписку на stream аналогичным способом тоже можно.организовать, но как это сделать нужно у Chiffa спросить.