Клубы. Вывод информации об участниках, администраторе и модераторов с аватарами

+37
1.57K
Небольшое изменение внешнего вида клубов путём добавления аватаров к списку участников, модераторов и администратору.

1) файл /core/lib_clubs.php добавляем в конец файла 3 новых функции:
  1.  
  2.  
  3. function clubAdminWithAvatar($club_id){
  4. $inCore = cmsCore::getInstance();
  5. $inDB = cmsDatabase::getInstance();
  6. $inPage = cmsPage::getInstance();
  7.  
  8. $sql = "SELECT u.id as id, u.nickname as nickname, u.login as login, p.imageurl as imageurl
  9. FROM cms_clubs c
  10. LEFT JOIN cms_users u ON u.id = c.admin_id
  11. LEFT JOIN cms_user_profiles p ON p.user_id = u.id
  12. WHERE c.id = '$club_id'";
  13.  
  14. $rs = $inDB->query($sql);
  15.  
  16. $usr = $inDB->fetch_assoc($rs);
  17. if (!function_exists('usrImageNOdb')){
  18. include_once($_SERVER['DOCUMENT_ROOT'].'/components/users/includes/usercore.php');
  19. }
  20. $usrimage = usrImageNOdb($usr['id'], 'small', $usr['imageurl'], $usr['is_deleted']);
  21.  
  22. $html = '<div id="all_user_list" style="width: 190px;"><div class="avatar" style="float:left;width:78px;height:100px;text-align:center;padding-left:2px;padding-bottom:5px;margin:4px auto;">'. $usrimage.'<a href="/users/'.$usr['login'].'" class="none" style="width:76px;float:left;line-height:9px;margin-top:4px;margin-bottom:6px;">'.$usr['nickname'].'</a></div></div></div><div style="clear:both"></div>';
  23.  
  24. return $html;
  25. }
  26.  
  27. function clubMembersListWithAvatar($club_id){
  28. $inCore = cmsCore::getInstance();
  29. $inDB = cmsDatabase::getInstance();
  30. $inPage = cmsPage::getInstance();
  31.  
  32. $sql = "SELECT u.id as id, u.nickname as nickname, u.login as login, p.imageurl as imageurl
  33. FROM cms_user_clubs c
  34. LEFT JOIN cms_users u ON u.id = c.user_id
  35. LEFT JOIN cms_user_profiles p ON p.user_id = u.id
  36. WHERE c.club_id = '$club_id' AND c.role = 'member'";
  37.  
  38. $rs = $inDB->query($sql);
  39. $total = $inDB->num_rows($rs);
  40.  
  41.  
  42. $now=0;
  43. if ($total > 10) {
  44. $html = '<div id="all_user_list" style="width: 190px; height: 570px; overflow-y:auto; overflow-x: hidden;">';
  45. }
  46. if ($total <= 10) {
  47. $html = '<div id="all_user_list" style="width: 190px;">';
  48. }
  49. while($usr = $inDB->fetch_assoc($rs)){
  50. if (!function_exists('usrImageNOdb')){
  51. include_once($_SERVER['DOCUMENT_ROOT'].'/components/users/includes/usercore.php');
  52. }
  53. $usrimage = usrImageNOdb($usr['id'], 'small', $usr['imageurl'], $usr['is_deleted']);
  54.  
  55. $html .= '<div class="avatar" style="float:left;width:78px;height:100px;text-align:center;padding-left:2px;padding-bottom:5px;margin:4px auto;">'. $usrimage.'<a href="/users/'.$usr['login'].'" class="none" style="width:76px;float:left;line-height:9px;margin-top:4px;margin-bottom:6px;">'.$usr['nickname'].'</a></div>';
  56.  
  57. $now ++;
  58. }
  59. $html .= '</div></div><div style="clear:both"></div>';
  60.  
  61. return $html;
  62. }
  63.  
  64. function clubModersListWithAvatar($club_id){
  65. $inCore = cmsCore::getInstance();
  66. $inDB = cmsDatabase::getInstance();
  67. $inPage = cmsPage::getInstance();
  68.  
  69. $sql = "SELECT u.id as id, u.nickname as nickname, u.login as login, p.imageurl as imageurl
  70. FROM cms_user_clubs c
  71. LEFT JOIN cms_users u ON u.id = c.user_id
  72. LEFT JOIN cms_user_profiles p ON p.user_id = u.id
  73. WHERE c.club_id = '$club_id' AND c.role = 'moderator'" ;
  74.  
  75. $rs = $inDB->query($sql);
  76. $total = $inDB->num_rows($rs);
  77.  
  78.  
  79. $now=0;
  80. $html = '<div id="all_user_list" style="width: 190px;">';
  81.  
  82. while($usr = $inDB->fetch_assoc($rs)){
  83. if (!function_exists('usrImageNOdb')){
  84. include_once($_SERVER['DOCUMENT_ROOT'].'/components/users/includes/usercore.php');
  85. }
  86. $usrimage = usrImageNOdb($usr['id'], 'small', $usr['imageurl'], $usr['is_deleted']);
  87.  
  88. $html .= '<div class="avatar" style="float:left;width:78px;height:100px;text-align:center;padding-left:2px;padding-bottom:5px;margin:4px auto;">'. $usrimage.'<a href="/users/'.$usr['login'].'" class="none" style="width:76px;float:left;line-height:9px;margin-top:4px;margin-bottom:6px;">'.$usr['nickname'].'</a></div>';
  89.  
  90. $now ++;
  91. }
  92. $html .= '</div></div><div style="clear:both"></div>';
  93.  
  94. return $html;
  95. }
  96.  
  97.  
в этом же файле находим блок:
  1.  
  2. function clubTotalMembers($club_id){
  3. $inDB = cmsDatabase::getInstance();
  4. if (!$club_id) { exit; }
  5. $members = array();
  6. $sql = "SELECT 1
  7. FROM cms_user_clubs c
  8. WHERE c.club_id = '$club_id' AND c.role = 'member'";
  9. $rs = $inDB->query($sql);
  10. if ($inDB->num_rows($rs)){
  11. return $inDB->num_rows($rs) +1; //+1 потому что считаем еще и админа, не только юзеров
  12. } else {
  13. return 1;
  14. }
  15. }
  16.  
после него добавляем новую функцию:
  1.  
  2. function clubTotalModers($club_id){
  3. $inDB = cmsDatabase::getInstance();
  4. if (!$club_id) { exit; }
  5. $members = array();
  6. $sql = "SELECT 1
  7. FROM cms_user_clubs c
  8. WHERE c.club_id = '$club_id' AND c.role = 'moderator'";
  9. $rs = $inDB->query($sql);
  10. if ($inDB->num_rows($rs)){
  11. return $inDB->num_rows($rs);
  12. }
  13. }
  14.  
2)в файле /components/clubs/frontend.php приблизительно строка 159 начинается с:
  1.  
  2. //PARAMS
  3. $club['admin'] = clubAdminLink($id);
  4. $club['members'] = clubTotalMembers($id);
  5. $club['members_list'] = clubMembersList($id);
  6.  
заменяем на:
  1.  
  2. //PARAMS
  3. $club['admin'] = clubAdminWithAvatar($id);
  4. $club['members'] = clubTotalMembers($id);
  5. $club['moders'] = clubTotalModers($id);
  6. $club['members_list'] = clubMembersListWithAvatar($id);
  7. $club['moders_list'] = clubModersListWithAvatar($id);
  8.  
3) в файле /templates/ваш_шаблон/components/com_clubs_view_club.tpl
находим блок:
  1.  
  2. <div class="members_list">
  3. <div class="title">{$LANG.CLUB_ADMIN}:</div>
  4. <div class="list">{$club.admin}</div>
  5. </div>
  6.  
после него вставляем:
  1.  
  2. {if $club.moders > 0}
  3. <div class="members_list">
  4. <div class="title">{$LANG.MODERATORS} ({$club.moders}):</div>
  5. <div class="list">{$club.moders_list}</div>
  6. </div>
  7. {/if}
  8.  
находим блок:
  1.  
  2. <span class="members"><strong>{$club.members|spellcount:$LANG.USER:$LANG.USER2:$LANG.USER10}</strong></span>
  3.  
изменяем на:
  1.  
  2. <span class="members"><strong>{assign var="club_total" value =`$club.moders+$club.members`}{$club_total|spellcount:$LANG.USER:$LANG.USER2:$LANG.USER10}</strong></span>
  3.  
теперь списки выводятся с аватарами…
+1
Слава Слава 13 лет назад #
Спасибо тебе Майк ещё раз. Отличная работа проделана. Такими темпами мы действительно придём к 2.0 раньше срока.
+2
• Mike • • Mike • 13 лет назад #
пользуйтесь на здоровье… )
Боюсь к версии 2.0 многое поменяется придется искать другое решение )
+1
RooKee RooKee 13 лет назад #
2.0 ноль заключается в этом? Мне казалось быстродействие, нагрузки и хотя бы единосущность во всех компонентах. Редактор ББ сделайте уже везде(пользователи в шоке от набора). Это социальная - сеть должно всё просто быть.
0
picaboo picaboo 13 лет назад #
упс...а тему на форуме прикрыли..а там еще была просьба про вывод иконок клуба в блогах....

спасибо, очень нужные дополнения сделаны. имхо их бы в оффрелиз внести....
0
Слава Слава 13 лет назад #
А это уже в блогах править надо. Так что нужно отдельную тему поднимать.
-1
picaboo picaboo 13 лет назад #
а почему в блогах? если это иконка клуба?
0
• Mike • • Mike • 13 лет назад #
если вывод иконки планируется в блогах, нужно менять код вывода блогов…
0
fact fact 13 лет назад #
Всё супер.
Но есть небольшая трабла. Имя немного накладывается на Фамилию.(Имя под аватаром, ниже фамилия) Как сделать отступ между строчками с именем и Фамилией?
+1
• Mike • • Mike • 13 лет назад #
поменяйте в функциях значение для свойства line-height:9px; в блоке $html .= там где ссылки перед переменной .$usr['nickname'].
0
13 лет назад #
Спасибо Майк! А как сделать в выводе новостей обрезку, чтобы не горизонтально шли, а в 2 колонки, вот например www.ok2net.kz вкладка в таб закладках Радио, там бы сделать в 2 колонки вывод последних материалов_)
0
• Mike • • Mike • 13 лет назад #
да очень просто в styles.css найти .mod_latest_entry убрать clear:both и прописать float:left тогда квадраты будут в строчку
0
13 лет назад #
офигеть..как все просто) Спасибо огромное Майк.
0
13 лет назад #
Супер все отлично работает, автору огромное спасибо. Кстати, а есть ли возможность ограничить количество выводимых членов клуба, то есть что бы показывалось вверху блока - количество участников столько то, а отображалось последние 10 15 ...

Еще от автора

Предварительный просмотр в BB редакторе для 1.10.4
В продолжение темы— Предварительный просмотр в стандартном редакторе с ББ-кодами для версии 1.
Расширенная постраничная навигация вер. 1.10.3+
Плагин расширенной постраничной навигации для версий выше 1.10.3
Замена модальных диалогов на инлайн панели для версии 1.10.3
Заменяет модальные окна при отправке сообщений и написании записей на стену + статус пользователя. Добавлены две функции в /core/js/common.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.