You download a template from Framer's marketplace (free or paid) and everything looks great. Then you hit a wall: the CMS detail page won't do what you need.
Maybe one project needs six images, another needs three. One needs a video, another doesn't. You try editing the page and end up creating separate pages for each project instead of keeping things dynamic.
The trick is visibility conditions. They let one CMS detail page adapt to different content without breaking.
Say you have four image slots on a detail page. Three projects use all four images, but one project only has three.
Set the visibility condition on that fourth image: "If image 4 exists, show this. If not, hide it."
The layout adjusts automatically. No empty spaces, no manual fixes needed.
If your template has four image slots but you need six:
Duplicate the image components to make slots 5 and 6
Add your images to the CMS
Set visibility conditions for each new slot: "If image 5 exists, show this"
Same for image 6
Now the first project shows all six images. The second shows five. The third shows three. The page adapts based on what's there.
Want some projects to have videos and others not?
Add a video component to your detail page
Create a "video link" text field in your CMS
Connect the video component to that field
Set visibility: "If video link exists, show this"
Projects with video links show the video. Projects without them don't show an empty player. The component just disappears.
This works for anything: embedded forms, audio files, whatever.
Here's where it gets interesting. What if you need completely different layouts for different projects?
Create one component with multiple layout variants:
Variant 1: Two columns, two rows
Variant 2: Three columns, one row
Variant 3: One column, four rows
Add a "count" number field to your CMS (1, 2, 3, 4...).
Set the variant condition: "If count is odd, use variant 1. If even, use variant 2."
Projects 1, 3, 5 get one layout. Projects 2, 4, 6 get another.
Want four completely different layouts?
Set conditions based on the count field:
If count = 1, use variant 1
If count = 2, use variant 2
If count = 3, use variant 3
If count = 4, use variant 4
Each project gets its own layout.
You can use year fields or any text field:
"If year contains '25', use variant 4. Otherwise, use variant 1."
All 2025 projects get one layout. Everything else gets another.
One CMS detail page handles everything. No duplicate pages. No manual work every time you add a project. Just set up the conditions once, then add your content.
The visibility condition is the key. It gives you flexibility while keeping everything dynamic.