--- import PhotoLayout from '../../../layouts/PhotoLayout.astro'; import CategoryNav from '../CategoryNav.astro'; import AlbumHeader from '../AlbumHeader.astro'; import MasonryGallery from '../MasonryGallery.astro'; import Lightbox from '../Lightbox.astro'; import { getPostBaseSlug, type Locale } from '../../../utils/i18n'; interface Props { post: any; lang?: Locale; } const { post, lang = 'fr' } = Astro.props; // Importer toutes les images du dossier photos const allImages = import.meta.glob<{ default: ImageMetadata }>('/src/assets/images/photos/blog/**/*.{jpg,jpeg,png,webp}'); const { Content } = await post.render(); const baseSlug = getPostBaseSlug(post.id); // Construire le chemin de l'album avec l'année const year = post.data.date.getFullYear(); const albumPath = `/src/assets/images/photos/blog/${year}/${baseSlug}/`; const albumImages = Object.keys(allImages) .filter(path => path.startsWith(albumPath)) .sort(); // Résoudre la cover image depuis le glob const coverPath = `/src/assets/images/photos/blog/${year}/${baseSlug}/${post.data.coverImage}`; const coverImageLoader = allImages[coverPath]; const coverImage = coverImageLoader ? (await coverImageLoader()).default : undefined; // Résoudre les images de la galerie const galleryImages = await Promise.all( albumImages.map(async (imagePath) => { const loader = allImages[imagePath]; const img = await loader(); const filename = imagePath.split('/').pop() || ''; return { src: img.default, alt: filename.replace(/\.[^/.]+$/, '').replace(/-/g, ' ').replace(/^\d+-/, ''), }; }) ); // Données pour la lightbox const lightboxImages = galleryImages.map(img => ({ src: img.src.src, alt: img.alt })); ---
{post.body && (
)}