The Genesis theme framework is very popular and for good reason.
I bought Genesis and one of their child themes because I was in a hurry for an important project that I wanted to be done, yesterday – and it worked. Right out of the box.
My other projects are not as simple though. They require custom templates, custom post types, custom fields, meta boxes, custom homepage layouts, etc… Genesis just didn’t seem to be flexible enough for all that, not on the surface anyways.
Genesis is not made to be used alone, it is a parent theme or as others call it, a framework. So everything is behind the curtain of the parent theme. I needed to look deeper.
The child theme I bought was fairly simple, all customizations were done in the stylesheet. I grabbed the free “sample” child theme and it was also very minimal.
The Idea of a Parent / Child Themes is Profound
Using a child theme, customizations are kept separate from the core theme files. When the parent theme (Genesis) gets an update, your site gets those updates as well. The child theme with your customizations however, remain untouched.
An example of one of the advantages to using a framework would be when Genesis added accessibility features to the HTML. When this update came out, every client site I’ve built using Genesis also received this upgrade.
So I gave myself a challenge – I’ll make the next site using Genesis
With minimal effort I found Bill Erickson, Sridhar Katakam and Carrie Dils. If you search for anything to do with Genesis code, these three (and a few others) can’t be avoided. Just looking at a couple things from these guys and I began to get a feel for how Genesis is set up.
Genesis Templates
Making templates in Genesis definitely take a little getting used to.
At first you may be a little miffed… “There’s nothing there”.
One function – genesis(); – and a few actions and/or filters.
Diving a little deeper you find that it’s actually pretty cool the way Genesis is set up. You’ve got the one Genesis(); function which in turn calls other inner genesis functions which in turn render the theme templates that and produce the HTML that gets sent to your browser as a webpage.
These inner genesis functions write all the page elements you are familiar with such as the header, the content, the footer, meta data like the author, date published, tags, category, etc… All of these inner functions have hooks in their code.
Hooks are little doorways into these functions enabling us to write code that taps in and applies filters to, or adds or removes the page elements. Filters to reposition them, edit them or add to them or get rid of them altogether.
The Genesis Theme Framework has everything wrapped up so you don’t have to touch any of the inner code. Code which is well written, maintained, and supported by a pretty large community.
You never touch Genesis Theme Framework files.
Yet it is accessible enough and playable enough to produce any kind of website you want via a child theme.