Source Structure
Revela supports two approaches for organizing your photos, and you can combine them in the same project:
π Traditional Galleries
Photos belong to one gallery. Images stored directly in the gallery folder.
π Filter Galleries
Photos appear in multiple galleries. All images in a shared _images/ folder.
π Hybrid Approach
Mix both approaches. Some galleries with local images, others with filters.
Traditional Galleries
Each gallery contains its own images directly in the folder.
source/
βββ _index.revela # Homepage
βββ events/
β βββ _index.revela # Gallery page
β βββ event-001.jpg
β βββ event-002.jpg
βββ portraits/
β βββ _index.revela
β βββ portrait-001.jpg
βββ landscapes/
βββ _index.revela
βββ mountain.jpg
Characteristics
- β Simple and intuitive
- β Each photo belongs to exactly one gallery
- β Easy to manage manually
- β Photos cannot appear in multiple galleries
Filter Galleries
All images are stored in a shared _images/ folder. Galleries use filter expressions to select which images to display.
source/
βββ _index.revela # Homepage
βββ _images/ # Shared image pool
β βββ canon-event-001.jpg
β βββ sony-landscape-002.jpg
β βββ sony-portrait-003.jpg
βββ canon/
β βββ _index.revela # filter = "exif.make == 'Canon'"
βββ sony/
β βββ _index.revela # filter = "exif.make == 'Sony'"
βββ portraits/
βββ _index.revela # filter = "contains(filename, 'portrait')"
The _images/ Folder
The underscore prefix is significant:
_images/is not rendered as a gallery itself- Images are only accessible via filter expressions
- You can use any name:
_photos/,_pool/,_shared/
Example Front Matter
+++
title = "Canon Photos"
description = "All photos taken with Canon cameras"
filter = "exif.make == 'Canon'"
+++
Hybrid Approach
Combine both approaches in the same project:
source/
βββ _images/ # Shared pool for filter galleries
β βββ 2024-trip-001.jpg
β βββ 2025-event-001.jpg
β
βββ by-year/ # Filter galleries
β βββ 2024/
β β βββ _index.revela # filter = "year(dateTaken) == 2024"
β βββ 2025/
β βββ _index.revela # filter = "year(dateTaken) == 2025"
β
βββ clients/ # Traditional galleries (exclusive)
βββ wedding-smith/
βββ _index.revela
βββ ceremony-001.jpg # Only in this gallery
Choosing the Right Approach
π· Simple Portfolio
Use Traditional - each photo belongs to one gallery.
π·οΈ Multiple Categories
Use Filter - photos can appear in many galleries based on metadata.
π Client Work
Use Traditional - exclusive galleries for private content.
π By Camera / By Year
Use Filter - dynamic views based on EXIF data.
π Mixed Content
Use Hybrid - combine both approaches as needed.
Common Patterns
Homepage with Recent Photos
+++
title = "Welcome"
filter = "all | sort dateTaken desc | limit 6"
+++
Category Landing Page (No Images)
+++
title = "Browse by Camera"
template = "page"
+++
Select a camera brand below.