b2evolution first introduced blog skins in 2003. Of course, since then, every other blog platform has implemented its own flavor of skins or themes and the concept has become pretty mainstream.
With version 2.0 we hope to take the concept one step further with the introduction of a new reworked modular skin architecture.
One of our design goals with this new skin architecture was to address the main requests we got about skins:
- Skins should be easier to customize
- Skins should no longer need manual upgrade when the core app is upgraded
Regarding the upgrading, we had already slowed down on incompatibilities with versions 1.8 to 1.10: skins designed for b2evo 1.8 work without modification in 1.9 and 1.10.
However, with version 2.0, we are refining *all* the skin tags in a way that will maximize their upward compatibility with future versions. Our goal here is that once you upgrade your customized skin to 2.x-stable, you will never have to upgrade it again if you don't want to...
Combing through all these tags to make them future proof is what currently takes the most time and holds back the release of 2.0...
Regarding easier customization, we have introduced containers and widgets.
Instead of calling a lot of plugins with various parameters, skins 2.0 now simply define containers such has "Header" or "Sidebar" (to name the obvious ones).
Then, in the back-office, a blogger can easily add widgets to the containers of his choice. He would for example add a "Logo widget" and a "Blog list widget" to the Header. Then he would maybe add a "Calendar widget", a "Category list widget" and an "XML feeds" widget to the sidebar. He can also change the order of these widgets at any time.
Widgets automatically get their display parameters from the skin containers. This allows them to automatically adopt the look & feel of the container they're used in. For example: lists may display vertically in the sidebar but horizontally in the header.
However, widgets can also define their own parameters and users can easily set these through a form. Would you like to be able to browse years in that calendar? What file do you want to display as the blog logo? etc...
b2evolution 2.0 will ship with more than a dozen core widgets, as well as plugin widgets ("Who's online?"...) Plugin authors already know how to write their own widgets: they are simply "SkinTag" plugins just as before. Except that now users have an interface to place them at the desired place.
Optionally, you can define parameters for the Widget/skinTag plugin. For example, a weather plugin would define the "city" parameter. It would use it to display the weather for the city of the blog it is included in. And it could even be included twice in the same blog, with different parameters. (Didn't you always dream to track the weather for your work town and your home town on your blog's sidebar? ;))
Views & Pages
Another improvement is that skins can now display something completely different when you are viewing a post list, a single post, a user contact form... or a page.
Yes, b2evolution 2.0 supports out-of-the-flow pages that you can use for general purpose information (what the blog is about, your résumé, rules for commenting...). And you can easily link to your pages from anywhere on your sidebar: just throw in the "Page list widget". Want to link to the pages from the header: just the same! ;)
Of course, the grassroots evolution bloggers among us will still want to fine tune every little aspect of their skin. We can still do that just as before by editing the skin templates... and it may actually just have gotten easier...
You can now browse through your skin templates online with the embedded file manager and, should you need to, you can edit any template, and especially any CSS file right in place on the server.
Finally, we are adding quite a lot of comments into the skin templates in order to make sure you will feel comfortable with the new skinning system just by opening the files in Dreamweaver or whatever editor you like.
... actually, skins 2.0 simply follow the evolutionary path we've been on since spinning off b2: more features, cleaner code, better comments! ;D