I work for a web design company that builds and hosts brochure-type websites for small businesses, with a typical website being 6 pages and no e-commerce.
We currently run an in-house built CMS that was created 15 years ago and unfortunately it’s now getting past its use-by date (it looks very dated and there are several improvements we would like to make). All of the people that originally worked on it have left the company and so we’re looking at replacing it with something off-the-shelf.
I’ve looked at several CMS’s and while they look great for a single site, I don’t think they’d work so well in our situation. Our current CMS is a single installation (eg one set of CMS files and one database) that manages 500+ websites. Ideally the replacement must work in a similar manner, eg we don’t want to have to install a set of CMS files and a separate database for every single site. We feel that would be a nightmare to administer when it came to update the CMS, not to mention the waste of space due to each CMS file being repeated across all the sites.
Each client site operates under its own domain name and each client has a login that allows them to log into an interface that lets them update the content of their site (update text and images only, can’t change HTML and CSS and can’t add new pages). Once logged in the client sees only their website content, they’re not even aware that other sites exist within the CMS. We have a super-admin login that lets us update any client’s website (update text and images, update HTML and CSS, add and delete entire pages, etc).
The client sites are initially built outside the CMS as straightforward HTML pages that include all the text and images (eg you could open the pages in a browser and see the site as it’s intended to be). We then import the site into the CMS which reads the HTML pages and saves it in the database and copies the images to an image directory on the server (each client has their own image directory). We then use an editor in the CMS to go through and mark in the pages the text and images that the client is allowed to change. The client can’t edit anything other than the blocks that we’ve marked as editable. We also mark common HTML code that repeats across the site’s pages, eg footer, menu bar, etc and the CMS extracts those. The end result are pages within the CMS that might look like this:
As you can see we have tags that are surrounded by two dollar signs. The contents of the tags are kept elsewhere in the database and when the CMS constructs the page for output to the browser it pulls together all the tag contents and outputs a full HTML page. The tag contents can be anything from a few words of text (eg the $$page-title$$ tag) to dozens of lines of HTML (eg the $$site-footer$$ tag).
When the client logs into the CMS they see a list of the pages for their site and can click on one to edit it. The full page is shown, just as it would appear in a browser, and when they hover over the parts of the page that they can change their see little handles appear to show them that part is editable. They can then click on it to edit it. If it’s text then a text editor pops up over the top of the page and they can edit the text. If it’s an image then they’re given the option to upload a new image which will replace the old one (the new image is resized to match the size of the current image so the page layout doesn’t change).
I would have thought that our requirements would be the same as many other web design companies but I’m struggling to find a CMS that can handle multiple sites from just the single CMS installation and treats each site as being totally separate from all the others (eg doesn’t share users or domain names between the sites).
The last requirement is that we can host it on our own server.