I'm a programmer. Well, I have a MS in computer science but have spent the last 15 years in (ugh!) management so I'm more of a wannabe programmer right now. I totally "get" PHP, mySQL, HTML, CSS...so enough knowledge to be dangerous.
I want to learn the basic concepts behind how I could create a system that allows a client to select an existing CSS theme, "hit a button" and have their very own website generated - ready to go. Simple, static HTML sites.
So, not looking for an in depth technical tutorial, I realize that's asking too much -- just the high level idea behind how something like that would work. I would then go do the learning myself to implement, or at least have enough information to have an intelligent discussion with a hired gun to get it done.
I'd suggest you begin by investigating the popular Content Management System and blog scripts like Joomla and WordPress to get an understanding of how they work. It generally consists of a template-based system in which the unique content of each page (title, meta tags, body content, etc.) is stored and retrieved from a database, accompanied by a control panel for the user.
From there you can create your own templates for your clients to use within such systems, or design your own. Good luck!
Thanks, Rick. Yeah I am pretty familiar with WordPress; I modified it a bit and integrated it seamlessly with phpBB on the last site I developed.
For this problem though I think I need to approach it differently. I don't want a page generator -- I want a site generator. Like, a new root folder inside of public_html and a domain pointer that points to it (so the client can have their own site name www.foo.com or foo.parentsite.com).
Maybe I'm overthinking it and it is as simple as doing the directory create and copying the file structure over...
The site creation process can be automated if you're willing to use subdomains like foo.parentsite.com by creating a system that would modify the .htaccess file on parentsite.com and load the necessary files into an appropriate directory on parentsite.com. It would take some care to make it stable and secure, but its absolutely possible. I'm sure you could find some scripts online that would do it and explain the details.
Supporting independent domain names would require a dedicated server (or perhaps a virtual dedicated server). That end of things could be also automated, but it would still require that your clients update the DNS settings on their domain name to point to your server manually. So I don't think it's practical.
Even the subdomain approach will probably require at least a virtual dedicated server if you start getting more than a handful of clients using it because you can easily run into resource limits on shared hosts for things like MySQL server accesses, and terms of service that prohibit the practice.
But from there, you can do whatever you like. Make your own Content Management System or rely on one of the scripts we've discussed. Good luck!