I'm going to try to explain the complexity involved in a Theme System and some of the steps I've already taken to address this issue. Any feedback is welcome :-)
A Theme defines what the website page
output looks like. There are going to be four things that will create
output:
- The core system
- Modules
- Web Service feeds, like a Twitter roll
- The theme itself to a minor extent
Our biggest goal while working on the Theme System is to allow a Site Admin to switch between Themes at will, while at the same time making sure that the site output consistently looks good regardless of the active Theme.
In
order to offer flexibility to Theme developers we don't want to limit
them too much. If they want to use a CSS Framework like Bootstrap, Gumby
or Foundation, or if they just want to use Normalize.css and work their
own magic, then we need to let them.
But at the same time there
has to be some consistency, some guidelines that Theme Developers,
System Developers and Modules Developers need to follow.
I've
already started working on that solution, but it needs some work and a
few opinions from Front End Devs. What I'm currently doing to add
guidelines is:
- "Theme Independent" items for System and Modules Developers
- We're using PureCSS
for layout because you can use the responsive grid system inside of
other 3rd party grid systems (so far only tested in Bootstrap and Gumby)
- Hint.css is available for text hints
- I've
pulled a couple popular features from Bootstrap 3.0 that will be
available to all System and Module devs, regardless of what system the
Theme is created with
- Create Alerts, Tabs and Drop Down nav menu items
- Module Developers will also be able to supply their own custom headers and assets (css, js, images), but this will almost certainly break Multi-Theme compatibility
- For Theme Developers
- Theme template must include a few headers and js footers to make sure the above are available
- We
have a list of AllianceCMS Specific css selectors and common HTML5
elements that Theme Devs must create css styles for to maintain
consistency (Required CSS Rules)
Like I said, it needs some work and a few opinions from Front End Devs :-)