вывод n случайных изображений на странице шаблона

встал вопрос – каким образом можно организовать вывод случайных изображений на странице. причем тут следующая тонкость: изображения не должны повторяться, подгружаться из определенной директории, и по определенному формату. к примеру, если ваш блог посвящен автомобилям, то вывод, к примеру, трех случайных сделает блог более привлекательным. с одной стороны, всё решаемо средствами php, как загрузка через web, так и создание превьюшек (кому интересно как – пишите, ибо это был первый путь решения задачи).. но это-же достигается средствами wordpress. итак, начинаем с

.../wp-admin/options-misc.php (Разные настройки) -> Сохранять файлы в эту папку: (wp-content/uploads);
НЕ отмечаем "Сортировать мои загруженные файлы по папкам по месяцу и году"

теперь открываем нужный файл шаблона (например, index.php) и нежно вставляем в него следующий код:

[code- <table border="0" cellspacing="0" cellpadding="0" width="100%"><tr><td colspan="3">
<div id="randomcars">Три случайные фотографии автомобилей на продажу:</div>
</td></tr><tr>
<td id="rndimgtd"><?php

$uploaderpath = $_SERVER[‘DOCUMENT_ROOT’].’/wp-content/uploads’;
$archiveurl = ‘http://host.domain/wp-content/uploads/’;
$previewsdir = ”; // в случае, если захотите хранить превьюшки в отдельной папке
$valid_types = array(".THUMBNAIL.GIF","THUMBNAIL.JPEG", ".THUMBNAIL.PNG", ".THUMBNAIL.JPG");
$pics = 3;

$dDir = opendir($uploaderpath . $previewsdir);
$aFileList = array();
while ($sFileName=readdir($dDir)) {
if ($sFileName!=’.’ && $sFileName!=’..’) {
$aFileList
=$sFileName;
// echo $sFileName.'<br/>’;
}
}
closedir ($dDir);

$j = 0;
foreach ($aFileList as $aFileName) {
$fileindir = strtoupper(substr($aFileName,strlen($aFileName) – 14,
strlen($aFileName)));
if (in_array($fileindir, $valid_types)) {
$imagesarray[$j] = $aFileName;
// echo $imagesarray[$j].'<br />’;
$j++;
}
}

if ($j >= $pics){
$rndimgs = array(”,”,”);
$k = rand(0, $j);
for ($i = 0; $i <= 2; $i++) {
while (in_array($imagesarray[$k], $rndimgs)) {
$k = rand(0, $j);
}
$rndimgs[$i] = $imagesarray[$k];
}
for ($i = 0; $i <= $pics-1; $i++) {
?><img src="<?php print($archiveurl.$previewsdir.$rndimgs[$i]); ?>" width="144" height="108" alt="Loading…"
title="Превью" /><?php
//sleep(1);
if($i <= 1){ ?>
</td><td id="rndimgtd">
<?php }
}
} else {
echo(‘<div style="background-color:#E9967A;color:#000000;line-height:100%;padding:5px;border: double #aa0000 4px;">
<small><b>error</b><br />Невозможно вывести превью изображений: минимальное количество
изображений-превью должно быть не менее трех.</small></div>’);
}
?>
</tr></table>[/code]
теперь, при загрузке изображения (во время создания post-а) в аплоаде будет создаваться превьюшка, и скрипт будет её подгружать. количество картинок регулируется путем изменения переменной $pics.

как дополнение к вышенаписанному, опишу способ как в данном примере выводить изображения закругленные с произвольной рамкой (html only). дописываем перед тегом <img src… следующее:

<div style="position:absolute"><img src="<?php bloginfo('template_directory');?>/images/rnd-cars-border.gif" width="144" height="108"></div>

и кидаем гифку из аттача в папку с шаблоном.

очень интересный скрипт
файлы в вп сейчас сохраняются так d0ba-0085-1-150×150.jpg

замена .THUMBNAIL.GIF на 150×150.jpg результата не дает
что можно еще придумать?

get_posts(), type=attach, order=rand и так далее…

Anonymous
Отправить
Ответ на: