вам нужен вывод всех фотоальбомов всех пользователей???Как можно реализовать сабж? Есть страница, на которую выводятся новые фотографии общих альбомов, но нужно, чтобы выводились все фото именно пользователей. Желательно — с пагинацией. Модуль не предлагать. Его уже нашел и успешно использую. Нужна именно страница.
если да позже выложу уже реализовывал такое
е
если да позже выложу уже реализовывал такое
тоже очень жду. Пользователям очень нравится мультизагрузка фото в профиле (можно давать фоткам разное название и описание, в отличие от мультизагрузки в общих фото)…
открываем /components/users/router.php
'_uri' => '/^users\/photoalbum.html$/i', 'do' => 'ualbum' );
вставляем
////////////вывод альбомов всех пользователей///////////////// if ($do=='ualbum'){ $albums = $model->getAlbum(); $smarty = $inCore->initSmarty('components', 'com_users_album.tpl'); $smarty->assign('albums', $albums); $smarty->display('com_users_album.tpl'); }
public function getAlbum() { $sql = "SELECT a.id as id, a.title as title, a.user_id, a.pubdate as pubdate, a.allow_who as allow_who, 'private' as type, p.imageurl as imageurl, COUNT(p.id) as photos_count, n.nickname as autor, n.login as log FROM cms_user_albums a LEFT JOIN cms_users n on n.id = a.user_id LEFT JOIN cms_user_photos p ON p.album_id = a.id GROUP BY a.id "; $result = $this->inDB->query($sql); if ($this->inDB->num_rows($result)) { while($album = $this->inDB->fetch_assoc($result)){ $album['imageurl'] = "/images/users/photos/small/{$album['imageurl']}"; $album['pubdate'] = cmsCore::dateFormat($album['pubdate']); $albums[] = $album; } } $albums = cmsCore::callEvent('GET_USER_ALBUMS', $albums); return $albums; }
в папке вашего шаблона в /components создаём файл com_users_album.tpl с содержимым
{if $albums} <div class="usr_albums_block" style="margin-top:30px"> <ul class="usr_albums_list"> <li> <div class="usr_album_thumb"> <a href="/users/{$album.log}/photos/{$album.type}{$album.id}.html" title="{$album.title|escape:'html'}"> <img src="{$album.imageurl}" width="64" height="64" border="0" alt="{$album.title|escape:'html'}" /> </a> </div> <div class="usr_album"> <div class="link"> <a href="/users/{$album.log}/photos/{$album.type}{$album.id}.html">{$album.title}</a> </div> <div class="count">{$album.photos_count|spellcount:$LANG.PHOTO:$LANG.PHOTO2:$LANG.PHOTO10}</div> <div class="date">{$album.pubdate}</div> <div class="date"><b>автор:</b>{$album.autor}</div> </div> </li> {/foreach} </ul> <div class="blog_desc"></div> </div> {else} <p>{$LANG.NOT_PHOTOS}</p> {/if}
альбомы откроются по ссылке (ваш сайт).ru/users/photoalbum.html
еще неплохо бы добавить ORDER BY a.pubdate DESC чтобы новые альбомы отображались первыми.
Только осталось три вопроса — пагинации нет? То есть, все альбомы будут на одной страницы?
Второе — тайтл сртраницы просто "Пользователи" где прописать?
И третье, самое важное — как убрать пустые альбомы (там где 0 фотографий)? Такие тоже есть.
//Делим на страницы if ($total){ $perpage = 10; //вместо 10 ставим нужное количество $page = $inCore->request('page', 'int', 1); $pagination = cmsPage::getPagebar($total, $page, $perpage, '/users/photoalbumpage-%page%'); $start = $perpage*($page-1); for($p=$start; $p<$start+$perpage; $p++){ if ($albums[$p]){ $page_albums[] = $albums[$p]; } } }
$smarty->assign('pagebar', $pagination);
в роутер добавляем
'_uri' => '/^users\/photoalbumpage-([0-9]+)$/i', 'do' => 'ualbum', 1 => 'page' );
после if ($do=='ualbum'){ пишем
$inPage->setTitle("фотоальбомы");
первый способ отфильтровать их
в шаблоне после
{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 закачиваем в указаный путь и меняем название на своё
Последнее } лишнее. А так молодец :)if (!$album['imageurl']){
$album['imageurl'] = "/images/users/photos/small/no_cover.gif";}
else {
$album['imageurl'] = "/images/users/photos/small/{$album['imageurl']}";}
}
да спасибо)))Последнее } лишнее. А так молодец :)
писал спешил