A common question has been raised a few times on the forum, and it usually goes something like this:
"With traditional CMS platforms such as Joomla, WordPress, Drupal, etc, I can easily change themes and my site is instantly transformed. How does this work in Grav?"
In an effort to answer this question, I will endeavor to provide some of the fundamental operating paradigms behind traditional CMS platforms and how Grav's approach turns them on their heads.
First, try to leave your traditional CMS conceptions behind for a minute. Basically WordPress, Joomla, Drupal, etc., have pretty strict database structure, meaning that you have to create content that conforms to the platform in question.
Often, this means that you have to construct your pages in ways that are not friendly, intuitive, or economical. Usually, this involves creating a menu, page content, and configuring blocks of other smaller content and assigning them to specific pages or scenarios. Once you have completed this content-creation task, you can then change themes at will, often having to tweak your content for optimal results.
A good example of this can be observed with WordPress. It is undeniably the most popular open source platform and while it is a blogging platform, it is also often used as a traditional CMS due to the abundance of themes and plugins available. Creating a standard blog post with WordPress is a simple affair, and it does this job exceedingly well. However, if you want to create more complex, non-standard pages, things get more complicated quickly. You often have to use a combination of widgets, a third-party plugin, and some extensive PHP modifications in the templates.
This approach makes creating content Hard but switching themes easy. This only really benefits the developer who might want to change themes occasionally. The downside is that it makes it very hard for the user to create content, something you need to do much more frequently!
Grav takes a different approach. It is a modern CMS that relies on a greater relationship between content and theme. What this means to you, is that there are very few restrictions in place imposed by Grav itself. Writing content is simple, and building pages is more friendly, intuitive, and even fun!
Because Grav doesn't have a rigorous database structure (in fact no database at all), you are not restricted into conforming to the platform in any way. However, this means that there is no standard structure for themes to hook into and rely upon. This is not a negative though, it means that a theme is not limited to the platform, and it doesn't have to support every little thing the platform supports. It only has to support functionality the content needs! In short, it means that your content and your theme are tightly coupled.
Usually, when building a site, you decide what it needs to look like, but this is done in conjunction with what your content is going to be. You think about these two parts at the same time, and this is the way Grav works. You can pick a theme/skeleton that is closest to your end-goal, or start creating from scratch. It means that you can easily take a design and bring it to reality, because you can create content that exactly fits the design.
Grav Themes & Skeletons
Antimatter is a bit of an aberration, as it supports a few different types of content. These are exemplified in the default Grav install (simple page), Blog Skeleton (multi-page blog example), OnePage Skeleton (Modern single page built with modular sections), and Shop Skeleton (multi-page catalog with JavaScript Shop script).
They all use the same Antimatter theme, just with different content examples. The skeleton packages are akin to RocketTheme RocketLaunchers, ie., a ready-to-go package. Just extract the zip, and point your browser at the directory. Job done! They include the Grav core, User pages, theme, and all plugins required.
Most other themes in the downloads section are very specialized. They only support a certain set of pages and/or functionality. The theme/site design only provided for certain set of functionality, and Grav is happy to oblige because it is supremely flexible, unlike traditional CMS platforms. Most of these themes either come as a skeleton package (so you can get a working example with all the functionality), or with sample pages included in the theme. These sample pages can be copied into your user/pages
folder to get a similar experience as a skeleton package.
What this tight coupling between content and themes actually means, is that you don't really think of a theme as a skin for your content. A theme is really theme + content which equals an entire site design.
Feel free to post questions, comments, thoughts below...