View Full Version : PHP to CMS
02-08-2010, 08:18 AM
If you know PHP (which I am in the process of learning), what is involved in applying these skills toward customizing a CMS? .. such as Drupal or ExpressionEngine or MODx?
I know EE uses CodeIgniter:
Is the transition easy? Or so you still have lots to learn?
What do you guys think of these (and other) CMS'es? (Joomla is another popular CMS.)
02-08-2010, 12:20 PM
learning the way CMS's work is like learning a whole new language again. Even thought they're in PHP they have lots for you to learn. For example, drupal has a hooking system for modules, and requires you to learn quite a bit about how they all work. Wordpress has something similar called filters and actions.
The point I'm trying to make is that you can edit these no problem, but don't be fooled into thinking just because you know php that they will be easy to move into, because they require quite a bit of dedicated research
02-08-2010, 06:52 PM
02-08-2010, 07:12 PM
I've been working on my own custom CMS (by myself, in me freetime, when I'm not lazy, and playing games, or watching tv, y'know how it goes right?) for about 2.5 years now. The design is sound, both for ERD and UML, so I started programming it about 6 months ago. Every time I reach the next step I'm like 'hmm, thats right. I thought I already made that class in my library....'. In any case, I now have a massive library.
What I'm getting at is that these systems require an immense amount of planning. PHP itself is useless to you without a solid foundation and route you want to follow.
My route for example is a basic N-tier MVC style front controller responsible for initiating and passing services. Services themselves implement an intercepting filter pattern to decouple all services from one another, and can relay chains back to the controller itself. Funny enough, I have yet to determine if I will generate a pull or push style cms, as both options are available with this design and its just a matter of changing the observer from services to controller and vice versa. Fortunately, that is generated via a template factory so it doesn't really matter which I end up choosing, I won't really have to code any major additional work.
To get to where I am took a massive amount of planning, design and energy. Without even typing a single line of code I had been through 3 revisions, and have revised once since (my bad, simple error on an composite versus aggregate design). And eventually I will finish it.
02-08-2010, 09:33 PM
To get to where I am took a massive amount of planning, design and energy. Without even typing a single line of code I had been through 3 revisions
Thanks for sharing, Fou. Very insightful. Obviously, you are a programming demigod of sorts.
There currently exists literally hundreds of CMS'es, right? So I'm curious why somebody (ANYbody) would write another .. if not for the learning-experience.
Does you particular CMS sport features that others don't? .. or distinguish itself in some way?
It's clear that much work goes into these CMS'es. Whole teams of studly coders work long-n-hard to create their magic.
And like Jay says, each takes considerable effort to master if you want to use it in your own projects.
I've been lookin at the new MODx Revolution (2.0), currently at beta5:
I like that it focuses on 'flexibility,' which was a main 'selling-point' for me.
But selection of a CMS is a key decision, cuz if you invest a lot of time & energy into learning one, and later discover that it doesn't work for you .. you've just wasted considerable time-n-effort.
And how do you really know without first putting it thru its paces. If there were only a handful of CMS'es, the decision might not be so difficult.
02-08-2010, 10:17 PM
While my system will incorporate quite a number of key features not available (though likely expandable into) current systems, I do this for the learning experience myself. Sorry, they are super secret for now :D
Though I may be well versed in PHP itself, I can embarassingly admit that I haven't actually writen a functional piece of software in well over two years now. Its between my contribution on the forum and my fun side things that I keep up in the languages themselves (though the little side things have amassed to my now lesee... 98 class library or so?). Currently I'm writing a piece of scheduling software for my backup jobs at work in C, so that I don't need to do it manually anymore (I spent literally weeks getting a best fit scenario, then everybody wants it changed anyway >.<). That will be good.
02-08-2010, 11:27 PM
So I'm curious why somebody (ANYbody) would write another .. if not for the learning-experience.
I'd guess everyone has a slightly different answer to that question.
Personally, specific requirements. At the moment, I run a highly modified version of FluxBB, (and could quite possibly find the features I want in other wares), but you get to a point when modifying other software where the amount of work you're putting in to ripping something apart and rebuilding it how you want it may as well just go into creating your own system from scratch, exactly how you want it. Attempting to add a full template system was my personal 'oh screw it' point where I decided to start from scratch instead. :D
02-10-2010, 02:08 AM
I work with Joomla, Drupal, Wordpress, and use CodeIgniter when custom programming.
Obviously knowing PHP makes it possible to modify these, but in the end it comes down to what you need to do and learn. I've been working with Joomla for about 3 years now, and I'm pretty quick with it, but Drupal is a little newer to me so it takes longer. However, I know that Drupal works better for some projects and Joomla is good for others.
So really, it depends on what you hope to do. If you are just a programmer type, and won't be doing much themeing, then you might find a PHP framework or a more coding centered CMS like Drupal will fit you better. If you want to do it all, like I try to, then Joomla or Wordpress are good because making a theme is much easier.
In general, before picking a CMS or Framework, look at the community around it. See if people are active, if there is good documentation, and so on. Look at your own goals, because if you are just out to keep learning but aren't sure how you will apply things, you'll find its hard to pin down your actual skill set. Working with a CMS for a couple days should give you a good basic feel for it, and if it will satisfy your needs, but don't just test it, actively engage it and use the resources at your disposal.