Автор : Sulquendi
Версия: 1.2
Демо
Для начало убедимся, что у нас включен боковой слайдер на форуме:
Админка - Настройки - Опции - Настройки боковой панели форума и блоков -
Включить боковую панель форума - Да
Далее проходим:
Админка - Разделы и модераторы - Управление блоками форума
В открывшимся окне нажимаем снизу
Добавить Блок
Выбрать тип блока -
HTML/Php код
Далее:
Заголовок пишем
Случайные изображения (или на свое усмотрение)
Время кэширования (в минутах) ставим 0 (для того чтоб при каждой загрузки страницы выводились случайные изображения, ибо они будут выводится через время указанное там)
Тип содержимого -
php
Содержимое:
PHP код:
// Показ случайных изображений из публичных альбомов
// Author : Sulquendi
// Version: 1.2
// -- Конфигурации виджета --
$use_vB_thumbnail_size = true;
$use_custom_css = false;
$twidth = 180;
$limit = 5;
$albums_list = "";
// -- Nothing to configure below this line --
if ($use_custom_css){
$pthumb = 'class="pthumb"';
$pcaption = 'class="pcaption"';
$pmore = 'class="pmore"';
$pstyle = '';
}else{
$pthumb = 'style="text-align:center;"';
$pcaption = 'style="text-align:center;font-style:italic;font-family: Times, serif;margin-bottom:10px;"';
$pmore = 'style="text-align:right;display:block;"';
$pstyle = 'style="border: 1px solid black;padding:1px;background: white;"';
}
if ($albums_list!="") $sup_cond = "AND alb.albumid IN ($albums_list)"; else $sup_cond ="";
ob_start();
require_once(DIR . '/includes/functions_album.php');
require_once(DIR . '/includes/functions_user.php');
$pic_get = vB::$db->query_read("
SELECT alb.albumid, att.attachmentid, att.userid, att.caption, att.dateline, att.state, fdt.filesize, IF(fdt.thumbnail_filesize > 0, 1, 0) AS hasthumbnail, fdt.thumbnail_dateline, fdt.thumbnail_width, fdt.thumbnail_height, u.username
FROM ".TABLE_PREFIX."album AS alb
LEFT JOIN ".TABLE_PREFIX."attachment AS att ON alb.albumid = att.contentid
LEFT JOIN ".TABLE_PREFIX."filedata AS fdt ON att.filedataid = fdt.filedataid
LEFT JOIN ".TABLE_PREFIX."user AS u ON att.userid = u.userid
WHERE alb.state = 'public' AND att.contenttypeid = '8' $sup_cond
ORDER BY rand(" . microtime()*1000 . ")
LIMIT $limit");
$output_bits = "";
while($pic = vB::$db->fetch_array($pic_get))
{
$albuminfo = fetch_albuminfo($pic[albumid]);
$picture = prepare_pictureinfo_thumb($pic, $albuminfo);
if ($use_vB_thumbnail_size) $size = $picture[dimensions]; else $size = "width=$twidth";
$output_bits .= "<div $pthumb><a href=\"album.php?{$vbulletin->session->vars['sessionurl']}albumid={$pic[albumid]}&attachmentid={$picture[attachmentid]}\"><img $pstyle src=\"attachment.php?{$vbulletin->session->vars['sessionurl']}attachmentid={$picture[attachmentid]}&thumb=1&d={$picture[thumbnail_dateline]}\" alt=\"{$picture[caption_preview]}\" $size /></a>";
$output_bits .= "</div><div $pcaption>{$picture[caption_preview]} by {$pic[username]}</div>";
}
$output_bits .= '<span '.$pmore.'><a href="album.php" alt="To the albums">Больше...</a></span>';
$output = $output_bits;
ob_end_clean();
Использовать шаблон -
block_html
Сохраняем, выставляем нумерацию отображение как будет угодно и переходим на сам форум. Обновляем и смотрим
Минус данного виджета, что в нем нет проверки прав пользователей. Т.е. если вы не зарегистрированы, а в параметрах конфиденциальности у пользователя стоит показывать только зарегистрированным, или вообще только друзьям, то на месте изображения будет красоваться пустое поле
Разбор полетов:
// -- Конфигурации виджета -- //
$use_vB_thumbnail_size = true;
$use_custom_css = false;
$twidth = 180;
$limit = 5;
$albums_list = "";
true - включить
false - выключить
$use_vB_thumbnail_size - Использовать параметры миниатюр форума
$use_custom_css - Пользовательская разметка css
$twidth - Ширина миниатюры
$limit - Кол-во показываемых миниатюр
$albums_list - ID альбомов из каких показывать. Если пусто, то из всех
Пользовательская разметка css
$pthumb = 'style="text-align:center;"';
$pcaption = 'style="text-align:center;font-style:italic;font-family: Times, serif;margin-bottom:10px;"';
$pmore = 'style="text-align:right;display:block;"';
$pstyle = 'style="border: 1px solid black;padding:1px;background: white;"';
$pthumb - разметка миниатюры
$pcaption - стиль комментария под миниатюрой
$pmore - кнопка Больше...
$pstyle - стиль изображения