blog site of branko ajzele, senior developer / project manager

How to properly build Magento theme: Skinning, not theming

It been a while since my last article. I have been playing with Python and Django for the last few weeks. Figured I might write an article about Magento in a meanwhile (its been a while since my last post). Recently we had a discussion in company about how to improve certain areas of our development process. The idea was for our designers to come up with a design guidelines for later usage from within company.

After hearing the long howto presentation from our designer, let me share some of my thoughts on how to build a theme that will most likely be a perfect balance of lightweight and usable, possible innovative, financially balanced in terms of needed total amount of hours for front-end development etc…

Here is my personal golder rule for the Magento theme development: “Skinning, not theming!“.

Magetno’s large number of elements and stages on front-end, wast number of view files in “app/design/frontend/default” make it extremely time consuming to do any challenging design changes. In my humble opinion, “app/design/frontend/default” location is the middle ground of the entire development that needs to be done on given site. What should be done is to move the designer to work more in “/skin/frontend/default” folder and developer to work more in “app/code/local” folder. This way you would get more clearer approach to project. Developers would be focused on the actual code while the designer would be responsible for making such design that complies to the existing class rules and the rest of the stuff in /skin folder.

Poking around “app/design/frontend/default” is something both developers and designers do. As mentioned previously, given the amount of files in these folders, this process is extremely time consuming. So, the obvious question is: Can one make such design that minimizes the use of theme folder files modifications?

If the store design is made such to comply more to a “skin” than “theme” term, this would enable you to be far more faster in building your client shops. Besides speed, your developers could then really focus on their work, isolating new full-fledged features instead of wasting time on “masking” or modifying the certain areas of Magento front-end. As a result, you will most likely be more precise in your estimates once you know your theme would be design such that it clearly integrates with default Magento front-end.

Surely, designers would be first to say: “Wait a minute, if all I do is skinning to comply to already written css rules and layout, then what freedom do I have in design? How can I deliver breathtaking stuff to my client!”. I would have to say that arguments like these are not valid. Before I became developer, I was working several years as a freelance web designer. Great simplistic design is far more harder to achieve then to throw in bunch of everything just to satisfy the form. When talking in terms of Magento, I noticed one lacking flaw in most of the site owners request. They tend to focus on insignificant layout changes, and the goody-looking-flashing-popping stuff then on the real content. Its like they thinking: Why write five words of product description text when I can throw in some flashy looking non-related photo here, etc.

To get back to the possible “designer dilemma” in terms of “Skinning, not theming” context. Great design stuff can be achieved just by changing few header and footer background images, menu navigation elements, widths, etc… Stuff that will make you wonder, is this Magento or? All it takes, is a different look at things.

  • I usually start with Magento's 'blank' theme. The blank theme could use some improvement in providing meaningful ids and classes for every element to make it easier for CSS to select objects.
  • benmarks
    With Magento there is nothing that serves clients better than a thorough familiarity with the different modules and how changing one template may impact multiple views.

    At Blue Acorn we have found Yoast's SEO-optimized blank theme to be a good starting point for most of our projects. Ultimately it is up to the developer to recognize the complexity of the design with regards to Magento's default themes, and to steer the design in the correct direction or warn the client of the impact on time and cost.
  • Good post. There is a LOT that can be done just with skinning. Take a look at CSS Zen Garden for examples of just how much can be changed without changing any of the actual coding.
  • Good post. I'd have to agree with you on your main point. Changing stuff in app/design/frontend is probably always going to be needed based on customer requirements, though you're right that it's time consuming.

    If Magento had better documentation this might not be such a problem.
blog comments powered by Disqus
Powered by Wordpress | Designed by Elegant Themes