Кнопки Добавить в друзья и Отправить сообщение в Списке Пользователей - Хак

1004
Многие пользователи в поисках друзей просматривают общий список, и каждый раз чтобы написать сообщение или добавить в друзья им надо заходить в профиль будущего друга и нажимать добавить в друзья, а теперь постораемся сократить работу пользователя на один клик.
Блог написан по предложению fact на основе форума Добавить в друзья в списке пользователей.
1. В файле /components/users/frontend.php находим:
Код PHP:
if ($is_users){
	while($usr = $inDB->fetch_assoc($result)){
			$rownum++;
			$usr['avatar'] = usrLink(usrImageNOdb($usr['id'], 'small', $usr['imageurl'], $usr['is_deleted']), $usr['login'], $menuid);
			$usr['nickname'] = cmsUser::getProfileLink($usr['login'], $usr['nickname']);
			$usr['flogdate'] = $inCore->dateFormat($usr['flogdate'], true, true);
			$usr['status'] = usrStatusList($usr['id'], $usr['flogdate'], false, $usr['gender']);
			$usr['num'] = $rownum + ($page-1)*$perpage;
			$usr['isfriend'] = (($inUser->id && !$myprofile) ? usrIsFriends($usr['id'], $inUser->id) : false);
			
            if (($orderby!='karma' || $orderto!='asc') || strip_tags($usr['karma'])<0){
                $users[] = $usr;
            }
		}
	}

и меняем на:
Код PHP:
if ($is_users){
	while($usr = $inDB->fetch_assoc($result)){
		if ($usr['id']!=$inUser->id){
			$rownum++;
			$usr['avatar'] = usrLink(usrImageNOdb($usr['id'], 'small', $usr['imageurl'], $usr['is_deleted']), $usr['login'], $menuid);
			$usr['nickname'] = cmsUser::getProfileLink($usr['login'], $usr['nickname']);
			$usr['flogdate'] = $inCore->dateFormat($usr['flogdate'], true, true);
			$usr['status'] = usrStatusList($usr['id'], $usr['flogdate'], false, $usr['gender']);
			$usr['num'] = $rownum + ($page-1)*$perpage;
			$usr['isfriend'] = (($inUser->id && !$myprofile) ? usrIsFriends($usr['id'], $inUser->id) : false);
			
            if (($orderby!='karma' || $orderto!='asc') || strip_tags($usr['karma'])<0){
                $users[] = $usr;
            }
		}
	}
}
Это замена убирает из общего списка самого пользователя, чтобы он не пытался сам себя добавить в друзья и не пытался самому себе написать ЛСsmile

2. Теперь надо поставить кнопки Добавить в друзья и Написать Сообщение в шаблон /templates/ВАШ_ШАБЛОН/components/com_users_view.tpl, тут есть две возможности:

2.1 Гостям не будут показываться кнопки Добавить в друзья и Написать Сообщение для этого в /templates/ВАШ_ШАБЛОН/components/com_users_view.tpl найдите это:
Код PHP:
{if $usr.microstatus}
 <div class="microstatus">{$usr.microstatus}</div>
{/if}
и ниже (или в любое другое место, зависит от вашей фантазии и дизайна) вставляете это:
Код PHP:
{if $user_id}
	{if !$usr.isfriend}
		<a href="/users/{$usr.id}/friendship.html" title="{$LANG.ADD_TO_FRIEND}" target="_blank"><img src="/templates/ВАШ_ШАБЛОН/images/icons/profile/friends.png" border="0"/></a>
	{else}
		<a href="/users/{$usr.id}/nofriends.html" title="{$LANG.STOP_FRIENDLY}" target="_blank"><img src="/templates/ВАШ_ШАБЛОН/images/icons/profile/nofriends.png" border="0"/></a>
	{/if}
	<a href="/users/{$usr.id}/sendmessage.html" title="{$LANG.WRITE_MESS}" target="_blank"><img src="/templates/ВАШ_ШАБЛОН/images/icons/profile/message.png" border="0"/></a>
{/if}
2.2 Гостям будут показываться кнопки Добавить в друзья и Написать Сообщение но при нажатии на них их перекинет на страницу авторизации для этого в /templates/ВАШ_ШАБЛОН/components/com_users_view.tpl найдите это:
Код PHP:
{if $usr.microstatus}
 <div class="microstatus">{$usr.microstatus}</div>
{/if}
и ниже (или в любое другое место, зависит от вашей фантазии и дизайна) вставляете это:
Код PHP:
{if !$usr.isfriend}
		<a href="/users/{$usr.id}/friendship.html" title="{$LANG.ADD_TO_FRIEND}" target="_blank"><img src="/templates/ВАШ_ШАБЛОН/images/icons/profile/friends.png" border="0"/></a>
	{else}
		<a href="/users/{$usr.id}/nofriends.html" title="{$LANG.STOP_FRIENDLY}" target="_blank"><img src="/templates/ВАШ_ШАБЛОН/images/icons/profile/nofriends.png" border="0"/></a>
	{/if}
	<a href="/users/{$usr.id}/sendmessage.html" title="{$LANG.WRITE_MESS}" target="_blank"><img src="/templates/ВАШ_ШАБЛОН/images/icons/profile/message.png" border="0"/></a>
потом в файле /components/users/frontend.php найдите это:
Код PHP:
if (!usrCheckAuth() || $inUser->id == $id) { cmsCore::error404(); }
и меняете на это:
Код PHP:
if (!usrCheckAuth() || $inUser->id == $id) { cmsUser::goToLogin(); }
Вот и все!!! Еще раз повторюсь пункты 2.1 и 2.2 взаимоисключающие, выбирайте тот вариант который вам по вкусу.
Так же думаю как все это реализовать в аяксе, кто может помочь напишите, буду рад.
Кстати кому нужно сперва пощупать вот Демо
Красивое решение выбора города при Регистрации | Загрузка Аватара при Регистрации (Случайный Аватар) ХАК (Бесплатно)
Комментарии (12)
Настёна 11 сентября 2011 в 16:43 +1
Хотелось бы сначала посмотреть, но Демо не работает...
DS Soft 11 сентября 2011 в 16:46 +8
Демо работает я целый день сегодня на нем сижу. А так вот скрин
Настёна 11 сентября 2011 в 16:48 0
Извиняюсь, почему то у меня при нажатии на Демо (Мазилла) выдает ошибку, в другом браузере отлично. Посмотрела. Отличная вещь! Спасибо огромное!
Максим Шорин 11 сентября 2011 в 21:18 +1
Давно заметил у тебя эту фишку =))    спасибо !
Patriot 17 сентября 2011 в 23:12 0
Всё сделал по инструкции, проверил 5 раз. Но кнопки не появились, всё как было так и осталось...Где ещё нужно копнуть? Версия 1.8
Patriot 17 сентября 2011 в 23:18 +1
Разобрался! Чёт не обратил внимания что нужно вместо degestan прописать свой шаблон. Спасибо за фишку! Полет нормальный!
DS Soft 18 сентября 2011 в 08:34 0
Я когда писал упустул это из виду, исправил в тексте блога degestan на ВАШ_ШАБЛОН
Слава 18 сентября 2011 в 23:08 0
Спасибо. Всё отлично работает.
SP 20 сентября 2011 в 00:43 0
удобная вещь для спамеров... )
Maximov 22 сентября 2011 в 23:19 0
Спасибо! Опробовал. Удобная вещь.

ЗЫ. Там в описании frontend.php не весь исходный код: нет кармы и закрывающих скобок.
Шадринец 3 ноября 2016 в 07:35 0
Для 1.10.+ я сделал так.

Поставил после
Код PHP:
  1. <div class="mod_new_user_lnk">{$usr.nickname|truncate:10}</div>
Вот этот код.
Код PHP:
  1. <tr>
  2. <td><a class="ajaxlink" href="javascript:void(0)" title="{$LANG.WRITE_MESS}: {$usr.nickname|escape:'html'}" onclick="users.sendMess('{$usr.id}', 0, this);return false;"><td><img src="/templates/{template}/images/icons/profile/message.png" border="0"/></td>Написать</a></td>
  3. </tr>
  4.  
  5. <tr>
  6. <td><a class="ajaxlink" href="javascript:void(0)" title="{$usr.nickname|escape:'html'}" onclick="users.addFriend('{$usr.id}', this);return false;"><td><img src="/templates/{template}/images/icons/profile/friends.png" border="0"/></td>В друзья</a></td>
  7. </tr>
Шадринец 3 ноября 2016 в 07:37 0
В /templates/ВАШ_ШАБЛОН/components/com_users_view.tpl