GHOST CMS - Channels
Channels
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.
Creating a channel
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 iPhone
, iPad
or Mac
on a custom route of site.com/apple-news/
.
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 Cameron
.
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.
When to use channels vs collections
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?
You should generally use a collection when...
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/news/my-story/
You might be better off with a channel if...
All you need is a computed view of a subsection of existing content
- You're combining/grouping different pieces of content
eg. posts tagged withnews
ANDfeatured
- You're dividing existing streams of content with multiple properties
eg. posts tagged withnews
but NOT authored bysteve
- 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.