If you want something more flexible than taxonomies, but less rigid than collections, then channels might be for you.
A channel is a custom stream of paginated content matching a specific filter. This allows you to create subsets and supersets of content by combining or dividing existing posts into content hubs.
Unlike collections, channels have no influence over a post's URL or location within the site, so posts can belong to any number of channels.
The best way to think of channels is as a set of permanent search results. It's a filtered slice of content from across your site, without modifying the content itself.
Channels are defined as a custom route, with a custom
controller property called
channel, and a filter to determine which posts to return.
routes: /apple-news/: controller: channel filter: tag:[iphone,ipad,mac] /editors-column/: controller: channel filter: tag:column+primary_author:cameron
In this example there are two channels. The first is a channel which will return any posts tagged
Mac on a custom route of
The second is a special Editor's Column area, which will return any posts tagged with
Column, but only if they're explicitly authored by
These are two small examples of how you can use channels to include and exclude groups of posts from appearing together on a custom paginated route, with full automatic RSS feeds included as standard. Just add
/rss/ to any channel URL to get the feed.
Collections and channels share a lot of similarities, because they're both methods of filtering a set of posts and returning them on a custom URL.
So how do you know when to use which?
There's a need to define permanent site structure and information architecture
- You're sorting different types/formats of content
eg. posts are blog posts OR podcasts
- You're filtering incompatible content
eg. posts are either in English OR German
- You want the parent filter to influence the post's URL
eg. an index page called
/news/and posts like
All you need is a computed view of a subsection of existing content
- You're combining/grouping different pieces of content
eg. posts tagged with
- You're dividing existing streams of content with multiple properties
eg. posts tagged with
newsbut NOT authored by
- You want to be able to update/change properties without affecting post URLs
eg. quickly creating/destroying new sections of a site without any risk
If you're still not sure which is the best fit for you, drop by the Ghost Forums and share what structure you're hoping to accomplish. There's a large community of Ghost developers around to help.