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

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

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

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

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

ЗЫ. Там в описании frontend.php не весь исходный код: нет кармы и закрывающих скобок.
0
Шадринец Шадринец 7 лет назад #
Для 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. <tr>
  5. <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>
  6. </tr>
0
Шадринец Шадринец 7 лет назад #
В /templates/ВАШ_ШАБЛОН/components/com_users_view.tpl

Еще от автора

DS Twitter Sender
Компонент DS Twitter Sender для Instant CMS 1.10.3.
Виджет Табло для яндекс браузера
Модуль «Виджет Табло для яндекс браузера» создан для простой генерации манифеста для виджета Табло в Яндекс браузере.
DS Music v1.0.3 FREE
DS Music v1.0.3 FREE (бывшая Instant Music v1.0) для InstantCMS v1.10.3
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.