Posted by Vasilis on Friday, June 26, 2009
Skinning Utopia... or taking DNN skins to the next level
I am just thinking of this so much time that I cannot keep it for myself for any longer. I love DNN skinning engine but I really think there is something important that is missing. Something that will take DNN skins to the next level.
So what is the problem
The problem is more obvious with the skins for sale on Snowcovered or on the DNN Marketplace. Those skins are not enough dynamic. DNN site owners need to be able to customize a skin upon their needs. They can do that now only if the know HTML and CSS or if they hire someone to do it for them. Skinners try to make their skins flexible and give their customers some power over the look and feel of their site by offering many page skins. Obviously creating more and more page skins is not the solution. Ten, fifty or a hundred page skins are not enough to cover all possible combinations. Not to mention that in most cases, the only difference between the page skins that included within a package is different headers or background colors.
Looking for the solution
DNN site owners need to be able to customize their skins through a friendly interface. Skinners need tools so they can offer this kind of flexibility with their skins. Skins need to be as powerful as the modules are. Skin Designer feature in the recent DNN versions seems to walk in this direction but what I envision is much more than that.
WordPress is a good place for inspiration
The first time I saw a WordPress theme with a Theme Options page I thought "Yes, this is a great idea!". DotNetNuke and WordPress have not much in common. But I find the idea to have a Skin Options page really exciting. A user friendly interface where the site owner will be able to customize a skin without HTML and CSS to be a requirement.
Implementation
OK, now begins the imaginative part. I'm not a programmer so what you will read in the following lines is probably far far away from a real world implementation.
We want the site owner to be able to customize both the HTML and the CSS part of a skin through a dynamically generated form. We'll do that with a module. Let's name it the "Skin Options" module. Through the module we can customize the skin at portal level or at page level. So a "Skin Options" page will be created automatically, when we install the module, under the "Admin" site section where we can set the skin options at portal level. But we can also override these options at page level just be dropping the module in a page and set new skin options for that particular page. The module will work only for the skins that include an options.xml file in the skin folder. In the options.xml file the skinner will be able to define what kind of input needs from the site owner and how this input will affect the skin.
Overriding skin.css
So for example the skinner could ask for a text input with "Background color:" label that will override a style within a CSS selector in skin.css (ideally multiple styles within multiple CSS selectors in skin.css). Or a select box where the user will be able to choose between several background images. Or a Boolean value based on which we'll be able to know if the user wants the login link to be visible or not. The module will create a new css file based on the user input that will override skin.css either for the whole portal or for a specific page.
Beyond skin objects
With the same process we can get some input from the site owner and put it in the DB. Then we can use that input in the skin.ascx to add logic to our skin code. So for example on some pages instead of the breadcrumbs skin object we show the page title or we don't show anything. Why not and small text parts in areas of the skin that panes are not appropriate. For example a custom message before the register link or two three additional links on the right of the login and register links. So in options.xml the skinner would be able to define custom tags that will return either a text or a Boolean value.
Conclusion
As I wrote, the implementation part of this post is imaginative. I have no idea if it makes any sense or not. What I wanted to do was to point out something that I see as a need in the DNN skinning market and then just imagine a possible solution from the perspective of a skinner.
I would love to read your thoughts in the comments.
Comments
Name (required)
Email (required)
Website