Не много изменить вид клубов

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО

Продолжение старой темы. Вывод списка модеров клуба.

#1 5 мая 2011 в 22:23
Мира и процветания всем Вам.
Решил продолжить тему от Nikitka опубликованную здесь

Проблему с выводом аватаров пользователей мы решили. Но остался ещё один вопрос.
Вывод модераторов клуба в блок.

А именно. Под аватаром клуба есть блоки выводящие администратора клуба и участников клуба. Но нету блока с модераторами клуба. на мой взгляд это упущение. Я не силён в PHP, поэтому прошу Вас помочь.
#2 6 мая 2011 в 00:10
Ну что ж! Предвидя, что и до админов тоже доберемся в конце концов… )))
Приступим
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'";
  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.  
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['members_list'] = clubMembersListWithAvatar($id);
  6. $club['moders_list'] = clubModersListWithAvatar($id);
  7.  
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. <div class="members_list">
  3. <div class="title">{$LANG.MODERATORS}:</div>
  4. <div class="list">{$club.moders_list}</div>
  5. </div>
  6.  
вроде всё… )
#3 6 мая 2011 в 00:52
Все работает четко и без запинок! Майку +100
#4 6 мая 2011 в 01:22
Здорово! Спасибо, пригодилось ;)

А иконку клуба выводить в рядом с названием клуба в его блоге — не пробовали? Вроде мелькало что-то подобное на форуме, но не найти
#5 6 мая 2011 в 09:16
Не совсем понял формулировку: “иконку клуба выводить в рядом с названием клуба в его блоге” напишите по-проще что и куда… )
#6 6 мая 2011 в 09:38
Спасибо Майк, всё отлично работает. Ещё один вопрос в тему.
В настройках Клуба, пункт меню "Модераторы" назначение модераторов производится из друзей админа а не из участиков клуба. Я так понял оное действо связано с приглашением в клуб. То есть назначая модера не из членов клуба, ему отсылается приглашение о вступлении в клуб?

На мой взгляд лучше зделать назначение модеров только из участников клуба.

Не совсем понял формулировку: “иконку клуба выводить в рядом с названием клуба в его блоге” напишите по-проще что и куда… )

• Mike •
Есть блоги пользователей, а есть блоги клубов. Чтобы не путать их, выводить перед названием блога клуба его иконку (аватар).
Сейчас название блога клуба, это название самого клуба. На мой взгляд, нужно подстовлять перед названием блога клуба "Блог клуба". Тогда получится вот так: Блог клуба Клуб любителе InstantCMS.
#7 6 мая 2011 в 09:45
Надо “поковыряться”… Чуть позже отпишусь если найду решение…
#8 6 мая 2011 в 09:47
С такими темпами к выходу оф.1.9 здесь на форумах склепается 2.0 smile
#9 6 мая 2011 в 09:52


С такими темпами к выходу оф.1.9 здесь на форумах склепается 2.0 smile

uavip

Для этого и создан данный сайт, усовершенствовать InstantCMS общими усилиями. scratch
#10 6 мая 2011 в 10:12

Есть блоги пользователей, а есть блоги клубов. Чтобы не путать их, выводить перед названием блога клуба его иконку (аватар).
Сейчас название блога клуба, это название самого клуба. На мой взгляд, нужно подстовлять перед названием блога клуба "Блог клуба". Тогда получится вот так: Блог клуба Клуб любителе InstantCMS.

Валерьян

да именно так. просто путаница страшная идет. название блога, название клуба… а так визуально можно клуб выделить дав ему "аватарку"

например здесь com_blog_view_post.tpl — о том что это блог клуба надо еще догадаться. он отвечает и за блоги и за блоги в клубах и по сути один и тот же. а по сути они должны быть немного разные. хотя бы вставить проверку является он блогом клуба, если да, то вывести строчку с иконкой клуба и названием клуба.
#11 6 мая 2011 в 10:20
Ещё одна неполадка. В обзоре клубов, количество участников клуба отоброжается нормально.
Пример из моего сайта: Пункт меню "Группировки" — Сталкеры — 5 участников.
А в модулях и на странице самого клуба, отоброжается меньшее количество. На странице клуба: "В группировке 3 сталкера" Как это можно исправить?
#12 7 мая 2011 в 07:59

Ещё одна неполадка. В обзоре клубов, количество участников клуба отоброжается нормально.
Пример из моего сайта: Пункт меню "Группировки" — Сталкеры — 5 участников.
А в модулях и на странице самого клуба, отоброжается меньшее количество. На странице клуба: "В группировке 3 сталкера"

Валерьян
Я понял в чём проблема. Сначала я думал что это из-за новых функций, но на движке, установленном с нуля, тоже самое.
Что самое интересное, на странице клуба всё нормально пока нет модераторов. Смотрите сами:
1 админ и 3 участника. Всего 4 участника. Модераторов нет.



1 админ и 3 участника. Всего 4 участника. Из них 2 модератора.



Я думаю надо тикет написать.
#13 7 мая 2011 в 15:03
я не много добавил к коду то что выше чуть позже выложу…
#14 7 мая 2011 в 15:08
Не могу создать карточку в багтрекере. Требует введения каптчи. Ввожу, но что дальше делать неизвестно.
#15 7 мая 2011 в 15:42
в файле /core/lib_clubs.php находим блок:
  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.  
в файле /templates/_default_/components/com_clubs_view_club.tpl

добавленный ранее блок меняем на:
  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>{$club.moders + $club.members|spellcount:$LANG.USER:$LANG.USER2:$LANG.USER10}</strong></span>
  3.  
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.