Страница со всеми фотографиями пользователей?

#1 23 июля 2012 в 04:09
Как можно реализовать сабж? Есть страница, на которую выводятся новые фотографии общих альбомов, но нужно, чтобы выводились все фото именно пользователей. Желательно — с пагинацией. Модуль не предлагать. Его уже нашел и успешно использую. Нужна именно страница.
#2 23 июля 2012 в 11:38
Вставил модуль в страницу отдельную и вывожу штук 150 фото, но так чтобы все и с пагинацией это действительно не помешает.
#3 23 июля 2012 в 12:01
оффтоп:Lagorden, а как ты выводишь на сайте ГЛАВНЫЕ новости? где такое свойство у материала есть?
#4 23 июля 2012 в 12:03


оффтоп:Lagorden, а как ты выводишь на сайте ГЛАВНЫЕ новости? где такое свойство у материала есть?

yury

Такого свойства по-умолчанию нет. Сделал хак. Идея моя, помощь в реализации Ленивый. Чуть позже планирую расписать мануал, если руки дойдут.
#5 23 июля 2012 в 12:14
да, было бы оч полезно.
#6 23 июля 2012 в 14:38

Как можно реализовать сабж? Есть страница, на которую выводятся новые фотографии общих альбомов, но нужно, чтобы выводились все фото именно пользователей. Желательно — с пагинацией. Модуль не предлагать. Его уже нашел и успешно использую. Нужна именно страница.

Lagorden
вам нужен вывод всех фотоальбомов всех пользователей???
если да позже выложу уже реализовывал такое
е
#7 23 июля 2012 в 14:57

если да позже выложу уже реализовывал такое

Олег

тоже очень жду. Пользователям очень нравится мультизагрузка фото в профиле (можно давать фоткам разное название и описание, в отличие от мультизагрузки в общих фото)…
#8 23 июля 2012 в 21:34
и так делаем страницу фотоальбомы всех пользователей
открываем /components/users/router.php
  1.  
  2. $routes[] = array(
  3. '_uri' => '/^users\/photoalbum.html$/i',
  4. 'do' => 'ualbum'
  5.  
  6. );
  7.  
  8.  
далее открываем /components/users/frontend.php
вставляем
  1.  
  2. ////////////вывод альбомов всех пользователей/////////////////
  3. if ($do=='ualbum'){
  4.  
  5. $albums = $model->getAlbum();
  6.  
  7. $smarty = $inCore->initSmarty('components', 'com_users_album.tpl');
  8. $smarty->assign('albums', $albums);
  9.  
  10. $smarty->display('com_users_album.tpl');
  11.  
  12. }
  13.  
открываем /components/users/model.php
  1.  
  2. public function getAlbum() {
  3. $albums = array();
  4. $sql = "SELECT a.id as id,
  5. a.title as title,
  6. a.user_id,
  7. a.pubdate as pubdate,
  8. a.allow_who as allow_who,
  9. 'private' as type,
  10. p.imageurl as imageurl,
  11.  
  12. COUNT(p.id) as photos_count,
  13. n.nickname as autor,
  14. n.login as log
  15. FROM cms_user_albums a
  16. LEFT JOIN cms_users n on n.id = a.user_id
  17. LEFT JOIN cms_user_photos p ON p.album_id = a.id
  18. GROUP BY a.id
  19. ";
  20. $result = $this->inDB->query($sql);
  21.  
  22. if ($this->inDB->num_rows($result)) {
  23. while($album = $this->inDB->fetch_assoc($result)){
  24. $album['imageurl'] = "/images/users/photos/small/{$album['imageurl']}";
  25. $album['pubdate'] = cmsCore::dateFormat($album['pubdate']);
  26. $albums[] = $album;
  27. }
  28. }
  29. $albums = cmsCore::callEvent('GET_USER_ALBUMS', $albums);
  30.  
  31. return $albums;
  32.  
  33.  
  34. }
  35.  
  36.  
  37.  
далее идём к шаблону
в папке вашего шаблона в /components создаём файл com_users_album.tpl с содержимым
  1.  
  2. {if $albums}
  3.  
  4. <div class="usr_albums_block" style="margin-top:30px">
  5. <ul class="usr_albums_list">
  6. {foreach key=key item=album from=$albums}
  7. <li>
  8. <div class="usr_album_thumb">
  9. <a href="/users/{$album.log}/photos/{$album.type}{$album.id}.html" title="{$album.title|escape:'html'}">
  10. <img src="{$album.imageurl}" width="64" height="64" border="0" alt="{$album.title|escape:'html'}" />
  11. </a>
  12. </div>
  13. <div class="usr_album">
  14. <div class="link">
  15. <a href="/users/{$album.log}/photos/{$album.type}{$album.id}.html">{$album.title}</a>
  16. </div>
  17. <div class="count">{$album.photos_count|spellcount:$LANG.PHOTO:$LANG.PHOTO2:$LANG.PHOTO10}</div>
  18. <div class="date">{$album.pubdate}</div>
  19. <div class="date"><b>автор:</b>{$album.autor}</div>
  20.  
  21. </div>
  22. </li>
  23. {/foreach}
  24. </ul>
  25. <div class="blog_desc"></div>
  26. </div>
  27.  
  28. {else}
  29. <p>{$LANG.NOT_PHOTOS}</p>
  30. {/if}
  31.  
вот вроде и всё
альбомы откроются по ссылке (ваш сайт).ru/users/photoalbum.html
#9 23 июля 2012 в 22:21
Олег, спасибо! Внес небольшую поправочку в /components/users/model.php после GROUP BY a.id
еще неплохо бы добавить ORDER BY a.pubdate DESC чтобы новые альбомы отображались первыми.
Только осталось три вопроса — пагинации нет? То есть, все альбомы будут на одной страницы?
Второе — тайтл сртраницы просто "Пользователи" где прописать?
И третье, самое важное — как убрать пустые альбомы (там где 0 фотографий)? Такие тоже есть.
#10 23 июля 2012 в 22:54
пагинация в /components/users/frontend.php после $albums = $model->getAlbum();

  1.  
  2. //Делим на страницы
  3. $total = sizeof($albums);
  4.  
  5. if ($total){
  6. $perpage = 10;
  7. //вместо 10 ставим нужное количество
  8. $page = $inCore->request('page', 'int', 1);
  9. $pagination = cmsPage::getPagebar($total, $page, $perpage, '/users/photoalbumpage-%page%');
  10.  
  11. $page_albums = array();
  12. $start = $perpage*($page-1);
  13. for($p=$start; $p<$start+$perpage; $p++){
  14. if ($albums[$p]){
  15. $page_albums[] = $albums[$p];
  16. }
  17. }
  18. $albums = $page_albums; unset($page_albums);
  19. }
  20.  
  21.  
  22.  
где передаётся в шаблон добавляем

$smarty->assign('pagebar', $pagination);
в роутер добавляем
  1.  
  2. $routes[] = array(
  3. '_uri' => '/^users\/photoalbumpage-([0-9]+)$/i',
  4. 'do' => 'ualbum',
  5. 1 => 'page'
  6. );
  7.  
  8.  
  9.  
в шаблон вниз добавляем {$pagebar}
#11 23 июля 2012 в 22:59
тип страницы в /components/users/frontend.php
после if ($do=='ualbum'){ пишем


$inPage->setTitle("фотоальбомы");
#12 23 июля 2012 в 23:07
есть 2 способа первый отфильтровать эти альбомы а второй подставить в этот альбом картинку нет фотографий чуть позже опишу эти 2 способа
#13 23 июля 2012 в 23:48
и так пустые альбомы
первый способ отфильтровать их
в шаблоне после
{foreach key=key item=album from=$albums}
ставим условие
{if $album.photos_count!='0'}
и перед {/foreach} закрываем {/if}
второй подставляем картинку в пустые альбомы "нет фотографий
в /components/users/model.php в public function getAlbum()
$album['imageurl'] = "/images/users/photos/small/{$album['imageurl']}";
меняем на
if (!$album['imageurl']){
$album['imageurl'] = "/images/users/photos/small/no_cover.gif";}
else {

$album['imageurl'] = "/images/users/photos/small/{$album['imageurl']}";}

}

картинку no_cover.gif закачиваем в указаный путь и меняем название на своё
#14 24 июля 2012 в 01:12

if (!$album['imageurl']){
$album['imageurl'] = "/images/users/photos/small/no_cover.gif";}
else {

$album['imageurl'] = "/images/users/photos/small/{$album['imageurl']}";}

}

Олег
Последнее } лишнее. А так молодец :)
#15 24 июля 2012 в 01:16

Последнее } лишнее. А так молодец :)

WALTERZ
да спасибо)))
писал спешил
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.