Videos Page
Live preview: https://travio.themeupstudio.com/videos/
This guide explains how the Videos page works, what drives its content, and how to customize it.
Route and Template
URL:
/videos/Route source:
routes.yamlTemplate file:
videos.hbsController:
channelBuilt-in route filter:
tag:hash-videoPage data source:
data: page.videos
Create a Ghost page with slug videos so page header/title content can render correctly.

How Videos Are Selected
Travio videos page is powered by Ghost’s internal tag filter:
Route filter is
tag:hash-videoIn Ghost Admin, this means post must be tagged with internal tag
#video
If a post is not tagged #video, it will not appear in /videos/.
What the Videos Page Includes
Page header (from
page.videos)Filter panel
Destination filter
Experience filter
Video card grid (wide card layout)
Empty-state message when no cards match selected filters
Pagination / Load More behavior
Bottom CTA section
Settings That Control Videos Page
Theme Custom Settings (Customize → Theme → Site Wide)
destinations:
Comma-separated destination tag slugs
Controls destination filter options shown on videos page
experiences:
Comma-separated experience tag slugs
Controls experience filter options shown on videos page
Code Injection: filter visibility
Use window.TRAVIO_CONFIG.filters.visibility.videos to control which filter groups appear.
Example:
If both are disabled, the filter panel is hidden on videos page.

Video Card Behavior
Videos page uses wide post cards (card-post-wide) with video-aware behavior.
For posts tagged #video:
Theme tries to load preview media via Ghost Content API.
If preview media is available, video preview can replace/fallback from static image.
If API/media fetch fails, card falls back to feature image or placeholder.
API Requirements for Best Video UX
For advanced video preview/filter behavior, set a valid Content API key:
Without valid API config:
Core videos listing still works (route-level
#videofilter)Some enhanced dynamic behaviors may degrade gracefully and use fallback images
Filtering Logic on Videos Page
Category filters use tags from your destination/experience custom setting lists.
Users can select multiple filters.
Filter panel visibility follows
filters.visibility.videos.Clear filter button resets active selections.
Summary text updates (showing visible/total).
Pagination and “Load More”
Videos page supports load-more behavior with videos-specific text:
Active button end-state text is customized to “No more videos”
Filtering integrates with paginated content loading logic
Empty-state message appears when no videos match selected filters
Related Post-Level Behavior
For single post pages (post.hbs):
Any post tagged
#videoautomatically uses Video Hero layout.This is independent of default post hero setting.
So #video controls both:
Inclusion in
/videos/Hero style on single post pages
Content Publishing Best Practices for Videos
For each video post:
Add internal tag
#videoAdd destination/experience public tags if you want it filterable on videos page
Add a strong feature image as fallback thumbnail
Ensure embedded/self-hosted video content is valid and accessible
This gives best results in both listing and single-post contexts.
Common Issues
Post not showing on
/videos/: missing#videointernal tag.Filters empty:
destinations/experiencessetting slugs don’t match real tags.Video previews not appearing: missing/invalid Content API key or unavailable media.
Header data missing: videos page slug not created.
No results too often: filters are too restrictive for current video library.
Last updated