I have decided to start building my own CMS. This is due the fact a friend wishes a custom website for which the common CMS systems, such as WordPress, Joomla and Drupal are limitations. Limitations with respect to theming is the problem here. As my friend also wishes to be able to change the content in an easy way, a static page isn’t really an option. Therefore, I have decided to design something new.
My incidence, the computer magazine I’m subscribed to, PC-Active, is also doing articles on building your own CMS. I guess I can have a look at their articles for inspiration. But also at my previous websites. Well… at the moment I am considering some design decisions.
Oké, here are some thoughts:
The idea is to have one “background” image, with on certain locations in the image room for a menu item. So, this would lead to a system where I select the background image, and select locations for a clickable area.
The menu engine: The number of menu locations will have to be made available to a place where the menu can be configured. And finally, the content itself.
Also, some standard stuff as user authentication, etc. But again, the idea is to make this modular…. seeing how clumsy my attempts are to integrate OAuth authentication with WordPress, which is nothing more then a dirty hack. So… the design should be modular… yet… how?
So far, I have been thinking about the following modules “localauth” for authentication with username and password, “page” for content, and “freeform” as freeformed theming render engine. Yet, how should they interact? They should be designed in such a way I can, for example, switch the engine without having to change anything else.
Hi Andre
Out of experience I know that creating a CMS is no easy task. I personally would not use an image as it is pretty large and doesn’t really scale well. Here are some random ideas.
Use an HTML page that defines areas for widgets. Those widgets can be menus, login stuff etc. It may even have a main content widget.
You may want to use an AJAX solution and create rest services for each module.
About images, make sure they can be uploaded and that text can be formatted without real HTML knowledge.
The last point is to identify the users. Admins want to have the most control possible. Editors usually want to be able to create/modify pages. Don’t bother them with too much technical stuff. Other users should have no rights what-so-ever.
Steven
PS: I am really surprised that theming is a problem in Joomla/Wordpress etc. Custom themes are quite powerful.
I am thinking about TinyCMS for handing wysiwyg, in combination with HTMLpurifier as extra safety and ensuring proper syntax.
Well… the image thing… the customers wishes ;) It’s like, a head with some thought bubbles, where the thought bubbles are the menu items. So, first, we have a fixed number of them, and second, their location is not on a straight line. WordPress menus are usually a list so…. that menu structure wouldn’t really fit in there, would it? So, this design would need something custom, right? I could hard-code them into some custom theme, but then I would be overriding half of the WordPress functionality. That would only be confusing for the customer, right? So I need something custom.
The thing is… I can make this thing into a one-time project, or, try to make the code re-usable for future use, right? Anyways, I will concentrate on the customers wishes, implement those first, but, keep a broader use in mind, which might include some other usage scenarios. Buuuuuut… the most important thing is, at the moment, to create what the customer wants, right?
Which is, basically, the desired lay-out and an admin screen where the user can change the text displayed on various pages. That’s the basic functionality of a CMS, right?