The Genesis theme framework is very popular and for good reason.
There are other “Frameworks” out there such as Thesis and Hybrid, but I have yet to try either of these. Genesis has taken the lead in this arena and I am a sucker for the hype.
I bought Genesis and one of their child themes because I was in a hurry for a semi-non-important project that I wanted to be done, yesterday. 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. Still, the hoopla, the hype. People really love this thing.
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 child theme gets those updates as well. The child theme, your customizations however, remain untouched. It’s like having an army of programmers maintaining your website.
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.
If I were to go back to all the sites I’ve built without a framework and offer to add accessibility features, for free, (one-time purchase, updates for life).
So I gave myself a challenge – I’ll make the next site using Genesis Theme Framework
First question for Google, “how do I …” doesn’t matter… 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.
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.