DotNetNuke is a great framework to use for all sorts of web applications. It is scalable, secure, fast, and supports a Modular Framework which allows you to fully customize the look, feel, and functionality of your website without changing the DNN core code. This is a must-have feature for web 2.0 development, but is lacking a single thing that would make everything so much easier to manage: Module Layouts.
Let me explain the concept. In DNN we have Skins which provide the backdrop for your website. The skin is usually what gives you the rich (or not) frames and background images that hold your website together. Within the skin are one or more Containers which hold the Modules in your website.
Many modules are simple enough that the Container will provide enough styling for their module. But in many instances, there are individual changes that need to be made to make the module look like you want it to for that website. If you have only one portal in your DNN instance, you can get away with making those changes directly in the desktopmodules folder, but if you need to support many portals within a single instance of DNN, you need to have a smarter solution that will load the files, images and style sheets from the Portal Specific File Repository (domain.com/portals/portalid/) for that website, so that changes made for one website do not affect the others in your DNN instance.
The solution is to use KodHedZ Layouts! The layout files are parsed on module installation and then loaded from your portal folder, not the desktopmodules folder. You can change the files anytime to match the specific needs of your website, without affecting any others in your DNN installation.
It is completely FREE to use KHZ.Layouts in your modules!
The Layout Loader allows you to select a Layout (and it's corresponding module) to load when the module is displayed. This make it a universal way to load up any module that uses the KHZ.Layout Base!