With flickity and php you can realize an automatic images gallery, with automatic titles and (if they are present) metatags:
<div id="gallery" style="width: 50%; margin-left: auto; margin-right: auto; margin-bottom: 4%;">
<div class="carousel" title="cliccare su una immagine per ingrandirla" data-flickity='{ "cellAlign": "center", "contain": true, "fullscreen": true, "wrapAround": true, "lazyLoad": 1 }'>
<?php
$images = glob("your-images-path/*.jpg");
$flag=1;
foreach($images as $image)
{
// Ricava il titolo dell'immagine (metatag o nome del file)
$imagedescription = '';
if (function_exists('exif_read_data')) {
$exifData = exif_read_data($image);
// Controlla se esiste un campo di commento o descrizione
if (isset($exifData['ImageDescription'])) {
$imagedescription = $exifData['ImageDescription']; // Titolo o descrizione nell'EXIF
}
}
$imageTitle = '';
// Verifica se la funzione IPTC è disponibile
if (function_exists('iptcparse')) {
// Ottieni i metadati IPTC dall'immagine
$iptcData = iptcparse(@iptcembed('', $image)); // iptcembed recupera i metadati IPTC da un'immagine
// Controlla se il campo "headline" (titolo) è presente nei metadati IPTC
if (isset($iptcData[2])) {
$imageTitle = $iptcData[2][0]; // Il campo 2 è "headline" nell'IPTC
// Troncamento del titolo se troppo lungo
$maxLength = 50; // Lunghezza massima del titolo
if (strlen($imageTitle) > $maxLength) {
$imageTitle = substr($imageTitle, 0, $maxLength) . '...';
}
}
}
// Se non c'è un titolo IPTC, usa il nome del file senza trattini
if (empty($imageTitle)) {
$imageTitle = pathinfo($image, PATHINFO_FILENAME); // Ottieni il nome del file senza estensione
// Rimuovi trattini dal nome del file, se presenti
$imageTitle = str_replace('-', ' ', $imageTitle);
}
echo '<div class="carousel-cell' .($flag?' active':''). '">';
echo '<img title="'. $imagedescription .'" data-flickity-lazyload="'. $image .'" onclick="onClick(this)" />';
echo "<span class='carusel-image-title'>$imageTitle</span>";
echo '</div>';
$flag=0;
}
?>
</div>
</div>