Я создал динамическую галерею с использованием PHP glob
читать каталоги и изображения в этих каталогах, а затем создавать ссылки для каждого каталога со скрытыми ссылками на изображения. Это отлично работает.
Проблемы, которые я пытаюсь решить сейчас: (1) как получить изображения из подкаталогов и (2) убедиться, что rel
Атрибут правильный, поэтому они будут добавлены в правильную галерею.
Прямо сейчас я хватаю rel
взяв файл изображения в качестве переменной и захватив его родителя с помощью basename(dirname($image))
,
Это должно быть динамическим, потому что нет никакого способа узнать, какие будут подпапки, будут ли подпапки или нет, и насколько глубоки будут подпапки. Скорее всего, наиболее будет 2 уровня из основных папок для каждой галереи в /_samples/
папку, но я не уверен, поэтому необходимо учесть любую глубину, а затем правильно найти имя каталога галереи.
Не то чтобы это имело значение, но я генерирую полные пути для изображений, потому что FancyBox2 выбрасывает 404 при использовании относительных путей с https.
<main>
<?php
// LIST DIRECTORIES AS LINKS & PREP FOR FANCYBOX
define('BASE', $_SERVER['DOCUMENT_ROOT']);
// directory name
$directory = BASE . "/" . "_samples/";
// get in directory
$folders = glob($directory . "*", GLOB_ONLYDIR);
$d = 0; // init dir array count
$f = 0; // init file array count
$folder_list = array();
$image_list = array();
$image_links = array();
?>
<ul id="folder-list" class="cf">
<?php
// directories
foreach($folders as $folder) {
if(is_dir($folder)) {
array($l['directory'][$d] = $folder);
$d++;
$nb = basename($folder) == "index" ? "1" : basename($folder);
$folder_list[$nb] = '<li><a class="icon-folder fancybox-trigger" data-trigger-rel="' . basename($folder) . '" href="#">' . $nb . '</a></li>';
} else {
// nada
}
}
ksort($folder_list);
foreach ($folder_list as $sample_folder){
echo $sample_folder;
}
?>
</ul>
<div class="hidden-links" style="display:none;">
<?php
$folders2 = glob($directory . "*", GLOB_ONLYDIR|GLOB_MARK);
foreach($folders2 as $folder2){
$image_files = glob($folder2 .'*.{jpg,png}', GLOB_BRACE);
}
$image_files2 = glob($directory . '*/*.{jpg,png}', GLOB_BRACE);
foreach($image_files2 as $image) {
$image_name = basename($image);
$parent_folder = basename(dirname($image));
echo '<a class="fancybox" data-fancybox-title="' . $parent_folder . ' : ' . $image_name . '" rel="' . $parent_folder . '" href="'. 'https://subdmain.mydomain.com/_samples/' . $parent_folder . '/' . $image_name . '"> </a>';
}
?>
</div>
</main>
Задача ещё не решена.
Других решений пока нет …