lightbox2 — PHP & amp; Лайтбокс (ссылка для циклических ссылок на последний файл набора лайтбоксов)

Отредактировано: отладка части кода, но проблема не устранена:

Проблема со следующим кодом заключается в том, что ссылка всегда приводит меня к последнему изображению в наборе. Я пытался изменить массив фотографий, но это не имело никакого эффекта. Любая помощь будет оценена.

Благодарю.

            <?php
$dir = 'pic';
$max_albums=9;
$albums = array_diff(scandir($dir),array('..', '.', 'thumbs'));

foreach ($albums as $album) {
$albumdir = $dir.'/'.$album;
$coverdir = $albumdir.'/thumbs';

$thumbs = array_diff(scandir($coverdir),array('..', '.'));

//re-index $thumbs
$thumbs = array_values($thumbs);

//1 random cover image from each album
$rnd_min = 0;
$rnd_max = count($thumbs)-1;
$rnd_i = mt_rand($rnd_min, $rnd_max);
$covers = $thumbs[$rnd_i];
//re-index $covers
echo $rnd_i.'<br>';

//populate hrefs
$photos = array_diff(scandir($albumdir),array('..', '.', 'thumbs'));

//re-index $photos
$photos = array_values($photos);

foreach ($photos as $photo) {
echo '<a href="'.$albumdir.'/'.$photo.'" data-lightbox="'.$album.'">';
}
//display cover images
echo '<img src="'.$coverdir.'/'.$covers.'" class="img-responsive"></a>';
}?>

2

Решение

хммм попробуйте вспять скандир

$photos = array_diff(scandir($albumdir,1),array('..', '.', 'thumbs'));
0

Другие решения

Не очень элегантное решение, но оно работает:

<?php
$dir = 'pic';
$max_albums=9;
$albums = array_diff(scandir($dir),array('..', '.', 'thumbs'));

foreach ($albums as $album) {
$albumdir = $dir.'/'.$album;
$coverdir = $albumdir.'/thumbs';

$thumbs = array_diff(scandir($coverdir),array('..', '.'));

//re-index $thumbs
$thumbs = array_values($thumbs);

//1 random cover image from each album
$rnd_min = 0;
$rnd_max = count($thumbs)-1;
$rnd_i = mt_rand($rnd_min, $rnd_max);
$covers = $thumbs[$rnd_i];

//populate hrefs
$photos = array_diff(scandir($albumdir),array('..', '.', 'thumbs'));

//re-index $photos
$photos = array_values($photos);

$countphoto = 0;

foreach ($photos as $photo) {
if ($countphoto==0) {
echo '<a href="'.$albumdir.'/'.$photo.'" data-lightbox="'.$album.'">'."\n";
//display cover images
echo '<img src="'.$coverdir.'/'.$covers.'" class="img-responsive"></a>';
}
else {
echo '<a href="'.$albumdir.'/'.$photo.'" data-lightbox="'.$album.'"></a>'."\n";
}
$countphoto++;
}

}?>
0

Так что я решил эту проблему с помощью простого оператора if countphotos == 0 в цикле foreach ($ photos as $ photo), если 0, он отображал бы миниатюру, иначе он просто выводил бы привязки к другим imgs.

Я также покончил со случайным уменьшенным изображением в качестве обложки, и просто вытащил первый эскиз набора.

У меня сейчас другая проблема, но я сделаю для этого отдельную ветку.

Спасибо!

0
По вопросам рекламы [email protected]