|
creeon
Гость
|
 |
« : 04.03.2009, 22:56:31 » |
|
Будет ли поддержка аватаров для Jomsocial ?????????????????  Или как это сделать? Спасибо.
|
|
|
|
|
Записан
|
|
|
|
|
smart
|
 |
« Ответ #1 : 04.03.2009, 23:22:06 » |
|
Во-первых, вы уже одну тему на форуме по данному вопросу создали, во-вторых с момента публикации предыдущей темы сутки еще не прошли, так что поднимать вопрос заново оснований нет, в-третьих от большого количества вопросительных знаков, ваш вопрос более важным не станет. Если вам это так срочно нужно и вам невтерпеж - вешайте объявление в коммерческом разделе, вполне возможно кто-нибудь и возьмется. Потенциально - да, будет такая поддержка, но потом. Сейчас у меня на это времени нет.
|
|
|
|
|
Записан
|
|
|
|
abbyevg
Осваиваюсь на форуме
 
Репутация: +6/-0
Offline
Пол: 
Сообщений: 92
эвилпанда
|
 |
« Ответ #2 : 10.03.2009, 00:39:51 » |
|
Посидел, наваял, т.к. самому надо. файл \www\plugins\jcomments\jcomments.avatar.xml, в строку 27, добавить (до закрытия тега params): <option value="js">JomSocial</option> файл \www\plugins\jcomments\jcomments.avatar.php, в строке 452, добавить case 'js': require_once( JPATH_BASE . DS . 'components' . DS . 'com_community' . DS . 'libraries' . DS . 'core.php');
foreach ($users as $user) { $instance = new CUser($user); $instance->init(); $avatars[$user]->avatar=$instance->getThumbAvatar(); $avatars[$user]->id=CRoute::_('index.php?option=com_community&view=profile&userid='.$user); } for ($i=0,$n=count($comments); $i < $n; $i++) { $userid = $comments[$i]->userid; if (isset($avatars[$userid])) { $avatarFile = $avatars[$userid]->avatar; $comments[$i]->avatar = '<img src="'. $avatarFile .'" alt="" border="0" />'; } else { $comments[$i]->avatar = $noavatar; } if ($avatar_link && isset($avatars[$userid])) { $comments[$i]->avatar = '<a href="'. JoomlaTuneRoute::_($profileLink . $avatars[$userid]->id) . '" target="_blank">' . $comments[$i]->avatar . '</a>'; } $comments[$i]->profileLink = (intval($userid)) ? JoomlaTuneRoute::_($profileLink . $avatars[$userid]->id) : ''; } unset($avatars); break; После чего, в настройках плагина jcomments.avatar появляется возможность выбора JomSocial На моем сайте этот код выглядит немного иначе по некоторым причинам, но вышеприведенное должно работать. Проверяйте и исправляйте если есть ошибки. Надеюсь, Сергей включит это в след. релиз плагина.
|
|
|
|
|
Записан
|
|
|
|
|
creeon
Гость
|
 |
« Ответ #3 : 10.03.2009, 23:05:57 » |
|
Тестил в лисе и експлоере. Все работает зашибись большой респект 
|
|
|
|
|
Записан
|
|
|
|
abbyevg
Осваиваюсь на форуме
 
Репутация: +6/-0
Offline
Пол: 
Сообщений: 92
эвилпанда
|
 |
« Ответ #4 : 11.03.2009, 15:54:41 » |
|
Небольшая поправка для jcomments.avatar.php, для корректной ссылки на профайл пользователя через аватар: > В файл \www\plugins\jcomments\jcomments.avatar.php, в строке 452, добавить case 'js': require_once( JPATH_BASE . DS . 'components' . DS . 'com_community' . DS . 'libraries' . DS . 'core.php');
foreach ($users as $user) { $instance = new CUser($user); $instance->init(); $avatars[$user]->avatar=$instance->getThumbAvatar(); $avatars[$user]->id=CRoute::_('index.php?option=com_community&view=profile&userid='.$user); } for ($i=0,$n=count($comments); $i < $n; $i++) { $userid = $comments[$i]->userid; if (isset($avatars[$userid])) { $avatarFile = $avatars[$userid]->avatar; $comments[$i]->avatar = '<img src="'. $avatarFile .'" alt="" border="0" />'; } else { $comments[$i]->avatar = $noavatar; } if ($avatar_link && isset($avatars[$userid])) { $comments[$i]->avatar = '<a href="'. $avatars[$userid]->id . '" >' . $comments[$i]->avatar . '</a>'; } $comments[$i]->profileLink = (intval($userid)) ? $avatars[$userid]->id : ''; } unset($avatars); break;
|
|
|
|
|
Записан
|
|
|
|
4.n
Осваиваюсь на форуме
 
Репутация: +19/-0
Offline
Пол: 
Сообщений: 139
StCrox ™
|
 |
« Ответ #5 : 24.04.2009, 17:48:24 » |
|
Спасибо!
|
|
|
|
|
Записан
|
|
|
|
|
smart
|
 |
« Ответ #6 : 24.04.2009, 17:57:20 » |
|
Надеюсь, Сергей включит это в след. релиз плагина. выключу но после серьезной переработки. есть проблема с производительностью, так как код: foreach ($users as $user) { $instance = new CUser($user); $instance->init(); $avatars[$user]->avatar=$instance->getThumbAvatar(); $avatars[$user]->id=CRoute::_('index.php?option=com_community&view=profile&userid='.$user); }добавит на страницу с комментариями столько запросов к БД, сколько пользователей участвовало в обсуждении... именно поэтому, для других компонентов, я выбираю данные прямо с БД, и в результате мы получаем 1 запрос, вместо целой пачки. Так что для того, чтобы эта интеграция была полностью корректна - надо мне немного поковыряться в потрохах у JomSocial
|
|
|
|
|
Записан
|
|
|
|
waraxeman
Захожу иногда

Репутация: +1/-0
Offline
Пол: 
Сообщений: 22
|
 |
« Ответ #7 : 26.04.2009, 20:45:13 » |
|
У меня почему то не работает выше приведенные коды, JomSocial 1.1.145 и JComment 2.0. Отображается пустой аватар
|
|
|
|
« Последнее редактирование: 26.04.2009, 21:22:19 от waraxeman »
|
Записан
|
|
|
|
bzzik
JComments Tester
Репутация: +219/-0
Offline
Пол: 
Сообщений: 3798
Contra Gaming Community
|
 |
« Ответ #8 : 30.04.2009, 01:24:06 » |
|
Я пока пользуюусь таким вариантом: case 'js': require_once( JPATH_BASE . DS . 'components' . DS . 'com_community' . DS . 'libraries' . DS . 'core.php'); for ($i=0,$n=count($comments); $i < $n; $i++) { $userid = $comments[$i]->userid; $user = &CFactory::getUser($userid); $comments[$i]->avatar = '<img src="'.$user->getThumbAvatar().'" alt="" border="0" />'; if ($avatar_link && $userid) { $userLink = CRoute::_('index.php?option=com_community&view=profile&userid=' . $userid); $comments[$i]->avatar = '<a href="'. $userLink .'" target="_blank">' . $comments[$i]->avatar . '</a>'; } $comments[$i]->profileLink = '<a href="'.$userLink.'" title="'.$user->getDisplayName().'"></a>'; } break;
|
|
|
|
« Последнее редактирование: 30.04.2009, 02:07:52 от bzzik »
|
Записан
|
|
|
|
bzzik
JComments Tester
Репутация: +219/-0
Offline
Пол: 
Сообщений: 3798
Contra Gaming Community
|
 |
« Ответ #9 : 30.04.2009, 02:03:55 » |
|
А вот и производительный вариант, который Серж я надеюсь возьмёт на вооружение: case 'js': if (count($users)) { $db->setQuery('SELECT userid, thumb as avatar FROM #__community_users WHERE userid in (' . implode(',', $users) . ')'); $avatars = $db->loadObjectList('userid'); unset($users); } else { $avatars = array(); } require_once( JPATH_BASE . DS . 'components' . DS . 'com_community' . DS . 'libraries' . DS . 'core.php'); for ($i=0,$n=count($comments); $i < $n; $i++) { $userid = $comments[$i]->userid; $comments[$i]->avatar = '<img src="' . JURI::root() . $avatars[$userid]->avatar .'" alt="" border="0" />'; if ($avatar_link && isset($avatars[$userid])) { $userLink = CRoute::_('index.php?option=com_community&view=profile&userid=' . $userid); $comments[$i]->avatar = '<a href="'. $userLink .'" target="_blank">' . $comments[$i]->avatar . '</a>'; } $comments[$i]->profileLink = '<a href="'.$userLink.'" title=""></a>'; } unset($avatars); break; Так как $avatars[$userid]->avatar существует всегда, то $noavatar вообще не использовался. Я у себя его проверил - работает! 
|
|
|
|
« Последнее редактирование: 30.04.2009, 02:08:14 от bzzik »
|
Записан
|
|
|
|
|
smart
|
 |
« Ответ #10 : 30.04.2009, 09:45:10 » |
|
Так как $avatars[$userid]->avatar существует всегда, то $noavatar вообще не использовался. во-первых, он не всегда существует... ведь если в списке комментарии от гостей, то массив $users будет пустой, и $avatars тоже.. во-вторых строчку: $comments[$i]->profileLink = '<a href="'.$userLink.'" title=""></a>'; нужно тоже включить в условие, что чуть выше... ведь иначе возможна ситуация, когда переменная $userLink не определена... и в-третьих, а что они в базе хранят относительный путь к картинке? почему тут напрямую используется avatar прочитанный из базы в качестве пути к изображению?
|
|
|
|
|
Записан
|
|
|
|
bzzik
JComments Tester
Репутация: +219/-0
Offline
Пол: 
Сообщений: 3798
Contra Gaming Community
|
 |
« Ответ #11 : 30.04.2009, 10:13:20 » |
|
Блин, про гостей забыл! Спасибо за напоминание. Что касается хранения аватарок - в базе путь вот такой images/avatar/thumb_6df1e1aed5ee42be5adcd3e9.jpg Вроде сейчас всё учёл? case 'js': if (count($users)) { $db->setQuery('SELECT userid, thumb as avatar FROM #__community_users WHERE userid in (' . implode(',', $users) . ')'); $avatars = $db->loadObjectList('userid'); unset($users); } else { $avatars = array(); } require_once( JPATH_BASE . DS . 'components' . DS . 'com_community' . DS . 'libraries' . DS . 'core.php'); for ($i=0,$n=count($comments); $i < $n; $i++) { $userid = $comments[$i]->userid; if (isset($avatars[$userid]->avatar)) { $comments[$i]->avatar = '<img src="' . JURI::root() . $avatars[$userid]->avatar .'" alt="" border="0" />'; } else { $comments[$i]->avatar = $noavatar; } if ($avatar_link && isset($avatars[$userid])) { $userLink = CRoute::_('index.php?option=com_community&view=profile&userid=' . $userid); $comments[$i]->avatar = '<a href="'. $userLink .'" target="_blank">' . $comments[$i]->avatar . '</a>'; $comments[$i]->profileLink = '<a href="'.$userLink.'" title=""></a>'; } else { $comments[$i]->profileLink = ''; } } unset($avatars); break; Хмм, хотя я сечйас проверил - если не залогинен, то аваратки не показываются вообще.
|
|
|
|
« Последнее редактирование: 30.04.2009, 10:37:38 от bzzik »
|
Записан
|
|
|
|
|
smart
|
 |
« Ответ #12 : 30.04.2009, 11:09:18 » |
|
Замени: if (isset($avatars[$userid]->avatar)) на if (isset($avatars[$userid]) && isset($avatars[$userid]->avatar))
|
|
|
|
|
Записан
|
|
|
|
bzzik
JComments Tester
Репутация: +219/-0
Offline
Пол: 
Сообщений: 3798
Contra Gaming Community
|
 |
« Ответ #13 : 30.04.2009, 12:17:30 » |
|
Всё равно. Я уже по разому пытался менять, но как только делаю логаут - аватарки пропадают. То есть получается, что они вообще не пытаются вывестись - в IE даже нету неверного вывода (ну таких квадратиков вместо предпологаемых картинок).
|
|
|
|
|
Записан
|
|
|
|
bzzik
JComments Tester
Репутация: +219/-0
Offline
Пол: 
Сообщений: 3798
Contra Gaming Community
|
 |
« Ответ #14 : 03.05.2009, 20:39:42 » |
|
Серж - что думаешь? Почему могуть прпадать аватарки, если ты не залогинен?
|
|
|
|
|
Записан
|
|
|
|
|
smart
|
 |
« Ответ #15 : 03.05.2009, 20:49:47 » |
|
Серж - что думаешь? Почему могуть прпадать аватарки, если ты не залогинен?
ну по тому коду, что ты привел, по идее пропадать не должны... чуть попозже попробую поставить этот JomSocial и проверить...
|
|
|
|
|
Записан
|
|
|
|
|