Вывод фотографий в профиле пользователя 1.10.3

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

Новые фото в профиле пользователя

#1 24 июня 2014 в 13:11
Здравствуйте дорогие участники Сообщества)
Возник такой вопрос касательно вывода фотографий в профиле пользователя 1.10.3 Как вы знаете в профиле выводятся фотоальбомы пользователей, есть плагин выводящий альбомы во вкладке (не помню у кого нашел и кого за этот плагин благодарить), соответственно необходимость вывода фотоальбомов пользователя в вкладке профиль отпадает (нужно либо удалять код либо его комментировать дабы не было дублирования). Подумал почему бы не заменить этот код на вывод последних добавленных фотографий (к примеру пяти или что б можно было выставлять сколько нужно) пользователем именно во вкладке профиль. А вот как это реализовать, немного затрудняюсь. Вот и прошу сообщество подсобить, так как поиск не дал результатов. Заранее благодарен проявившим интерес.
Прикрепленный файл
puserphotos_1k489.zip 3 Кб
#2 24 июня 2014 в 13:36
Все зависит от вашего мастерства программирования.
Во-первых, вам нужно получить из базы последние добавленные фото этого юзера.
Во-вторых, передать имена этих фото в файл tpl.
А в-третьих, отредактировать файл tpl, чтобы вместо фотоальбомов выводились последние фото.
Это довольно приличный по объему работы хак, поэтому не просите, чтобы я за вас его написал)))
#3 24 июня 2014 в 13:41


Все зависит от вашего мастерства программирования.
Во-первых, вам нужно получить из базы последние добавленные фото этого юзера.
Во-вторых, передать имена этих фото в файл tpl.
А в-третьих, отредактировать файл tpl, чтобы вместо фотоальбомов выводились последние фото.
Это довольно приличный по объему работы хак, поэтому не просите, чтобы я за вас его написал)))

Странник

С удовольствием бы написал хак, но к сожалению не программист, все больше и больше склоняюсь к тому что не ту профессию я выбрал в свое время)))) Теперь же нужно именно просить знающего человека.
Может как то можно сделать по аналогии с выводом фотоальбомов в профиле пользователя?
#4 24 июня 2014 в 14:24


ValeraK, не отчаивайтесь, а учитесь. Я сам по основной специальности авиационный инженер, а программирование освоил путем самообразования.

Странник

Ага, вот и учусь)
#5 25 июня 2014 в 12:25
Никто не делал? может поделитесь кодом на благо Сообщества и развития системы)
#6 25 июня 2014 в 12:26



ValeraK, не отчаивайтесь, а учитесь. Я сам по основной специальности авиационный инженер, а программирование освоил путем самообразования.

Странник

Ага, вот и учусь)

ValeraK
На примере было бы гораздо понятнее что и как нужно делать)
#7 27 июня 2014 в 06:36
Если актуально могу помочь, (ближе к вечеру).
#8 27 июня 2014 в 12:46


Если актуально могу помочь, (ближе к вечеру).

Lora

очень актуально) заранее благодарен
#9 27 июня 2014 в 20:27
Вопервых выставлять сколько нужно, пользователем не выйдет. В том плане, что для меня много возни. А так, идеальный вариант вставить вывод модуля "фотографии" в файл /templates/default/components/com_user_profiles.tpl. Т.е. этот код
  1. {if $usr.albums}
  2. <div class="usr_albums_block usr_profile_block">
  3. {if $usr.albums_total > $usr.albums_show}
  4. <div class="float_bar">
  5. <a href="/users/{$usr.id}/photoalbum.html">{$LANG.ALL_ALBUMS}</a> ({$usr.albums_total})
  6. </div>
  7. {/if}
заменить на этот
  1. <div class="usr_albums_block usr_profile_block">
  2. {php} echo cmsModule('photo');{/php}
  3. </div>
  4.  
Где ('photo'), созданная позиция в position.txt. И в админке у модуля поставить "показывать на всех страницах.
Тогда и с админки вы сможете выставлять конфигурации, но к сажалению у меня это несработало.Почему в одих файлах работает, а в других нет, я не понял.Найдёте решение, поделитесь, нет, в /templates/default/components/com_user_profiles.tpl вместо кода, который выше пишите это
  1. <div class="usr_albums_block usr_profile_block">
  2. {foreach key=tid item=photo from=$photos}
  3. <a href="http://site.ru/photos/photo{$photo.id}.html" title="{$photo.title|escape:'html'}">
  4. <img class="photo_thumb_img" src="http://site.ru/images/photos/small/{$photo.file}" />
  5. </a>
  6. {/foreach}
  7. </div>
А в файл components/users/frontend.php сразу после
if ($do=='profile'){
вставляете этот код

  1. cmsCore::loadClass('photo');
  2. $inPhoto = cmsPhoto::getInstance();
  3. $cfg['album_id'] = 0;
  4. $cfg['is_subs'] = 1;
  5. $cfg['showclubs'] = 0;
  6. $cfg['sort'] = 'pubdate';
  7. $cfg['shownum'] = 5; // кол-во фото
  8. $cfg['is_full'] = 1;
  9.  
  10. $inDB->addJoin('INNER JOIN cms_photo_albums a ON a.id = f.album_id AND a.published = 1');
  11. $inDB->addSelect('a.title as cat_title, a.NSDiffer');
  12.  
  13. // если категория задана, выбираем из нее
  14. if($cfg['album_id']){
  15.  
  16. // Если выбирать нужно включая вложенные
  17. if($cfg['is_subs']){
  18.  
  19. // получаем категорию
  20. $album = $inDB->getNsCategory('cms_photo_albums', $cfg['album_id']);
  21. if (!$album) { return false; }
  22.  
  23. $inPhoto->whereThisAndNestedCats($album['NSLeft'], $album['NSRight']);
  24.  
  25. } else {
  26.  
  27. $inPhoto->whereAlbumIs($cfg['album_id']);
  28.  
  29. }
  30.  
  31. }
  32.  
  33. // если фото клубов не нужны
  34. if(!$cfg['showclubs']){
  35. $inDB->where("f.owner = 'photos'");
  36. }
  37.  
  38. // Задаем период
  39. $inPhoto->wherePeriodIs($cfg['whatphoto']);
  40.  
  41. //устанавливаем сортировку
  42. $inDB->orderBy('f.'.$cfg['sort'], 'DESC');
  43.  
  44. //устанавливаем номер текущей страницы и кол-во фото на странице
  45. $inDB->limit($cfg['shownum']);
  46.  
  47. // получаем фото
  48. $photos = $inPhoto->getPhotos(false, $cfg['is_full']);
  49. if(!$photos) { return false; }
  50. // и далее ниже в
  51. cmsPage::initTemplate('components', 'com_users_profile.tpl')->
  52. // вставляем
  53. assign('photos', $photos)->
  54.  
На этом всё. Удачи.
#10 28 июня 2014 в 19:47
Lora, спасибо первый вариант мне не подходит так как необходимо выводить именно фотографии конкретного пользователя в его профиле. А вот второй вариант подавал надежды. Что то во frontend наверно instantcms.ru/users/files/download4509.html. Страница профиля теперь пустая instantcms.ru/users/files/download4510.html.
#11 29 июня 2014 в 00:42
Это
  1. // и далее ниже в
  2. cmsPage::initTemplate('components', 'com_users_profile.tpl')->
  3. // вставляем
  4. assign('photos', $photos)->
  5.  
не там, где надо
В вашем файле строка 460:
  1. cmsPage::initTemplate('components', 'com_users_profile.tpl')->
вот после неё и вставляйте
  1. assign('photos', $photos)->
#12 29 июня 2014 в 03:47
Lora, я вас понял, исправил. Фото выводятся из фотоальбомов общих. Как исправить чтоб выводились из частных альбомов пользователей?
#13 29 июня 2014 в 11:52

соответственно необходимость вывода фотоальбомов пользователя в вкладке профиль отпадает

ValeraK
А вот я как то не понял. Ну, да ладно. Всё начинаем по новой.
файл /templates/default/components/com_user_profiles.tpl
заменяете ваш код на этот
  1. <div class="usr_albums_block usr_profile_block">
  2. {foreach key=tid item=photo from=$photos}
  3.  
  4. <a href="{$photo.url}.html" title="{$photo.title|escape:'html'}">
  5. <img class="photo_thumb_img" src="http://default/{$photo.file}" width="64" />
  6. </a>
  7. <a href="/users/{$usr.login}/photos/private{$photo.album_id}.html">{$photo.title}</a>
  8.  
  9.  
  10. {/foreach}
  11. </div>
файл components/users/frontend.php
заменяете ваш код на этот
  1. cmsCore::loadClass('photo');
  2. $inPhoto = cmsPhoto::getInstance();
  3. $cfg['shownum'] = 3;
  4. //устанавливаем номер текущей страницы и кол-во фото на странице
  5. $inDB->limit($cfg['shownum']);
  6.  
  7. // получаем фото
  8. $photos = $model->getUser_Photo($inUser->id, $cfg['shownum']);
файл components/users/model.php
добавляетеэту ф-цию
  1. /**********************************************/
  2. public function getUser_Photo($user_id,$limit) {
  3. $inUser = cmsUser::getInstance();
  4. $is_my = $inUser->id == $user_id;
  5. $filter = '';
  6. $photos = array();
  7. $filter = "AND (
  8. allow_who='all'
  9. OR
  10. (allow_who='registered' AND ({$inUser->id}>0))
  11.  
  12. )";
  13.  
  14. $private_sql = "SELECT id, pubdate, imageurl as file, hits, title,album_id
  15. FROM cms_user_photos
  16. WHERE user_id = '{$user_id}' $filter
  17. ORDER BY id DESC
  18. LIMIT $limit";
  19.  
  20. $private_res = $this->inDB->query($private_sql);
  21.  
  22. if ($this->inDB->num_rows($private_res)) {
  23. while($photo = $this->inDB->fetch_assoc($private_res)){
  24. $photo['file'] = '/images/users/photos/small/'.$photo['file'];
  25. $photo['url'] = '/users/'.$user_id.'/photo'.$photo['id'].'.html';
  26. $photo['fpubdate'] = cmsCore::dateFormat($photo['pubdate']);
  27. $photos[] = $photo;
  28. }
  29. }
  30. return $photos;
  31. }
  32. /*********************************************/
Со стилями, думаю разберётесь.
#14 29 июня 2014 в 16:47
Lora, как то странно, но фото не выводятся. Поправил ссылку на файл изображения, но безрезультатно(
#15 29 июня 2014 в 17:19

Lora, как то странно, но фото не выводятся. Поправил ссылку на файл изображения, но безрезультатно(

ValeraK
Ну, что я могу вам сказать? Даже не знаю.Давайте ваши файлы, или описывайте подробно, что делали.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.