Welcome Guest, Not a member yet? Register   Sign In
Is it worth it for me to make my own CMS?
#1

[eluser]Tomed[/eluser]
I've never used a CMS before and there's so many open source ones that I don't know where to even begin looking! I'm redesigning a rather large web portal that has maintains around 3000 links and I've been working on moving the site away from its current HTML/XML design to PHP/SQL and I've been using CI to do so.

So far I have most of the content on the site sans the news section and a few other minor things. Updating the site is already way easier with PHP (no more copy/paste!) but I'd like to start making web apps so other people (with a login that I provide) can submit content to the site through the ease of forms.

When I started to look into how to implement the news section I realized that I'd need to have a users table to go alone with the news table. Then I realized that I'd need to work on a login application and form validation not to mention I'd like to have a WYSIWGT editor on the site as well. At this point I realized that I'm pretty much implementing an entire CMS and began to wonder if I should just try to find a nice open source one to save myself a lot of time.

So would it be worth it for me to implement all this stuff from scratch or could I possibly save some time and find a completed CMS?
#2

[eluser]Tripic[/eluser]
That really depends on what you want out of the CMS there are a lot of CMS systems out there and most of them are fairley easy to modify but if you want to keep a nice clean backend and you know exactly what you want you could probably build a system that will have a smaller impact on your server then the opensourse stuff thats out there and desighn it the way you want it as far as user auth goes i would just implement a user privilage system so that you can set what they are and or are not allowed to acess rather then having 2 dif user tables
#3

[eluser]pbreit[/eluser]
There are two reasons to build your own CMS: 1) as an exercise or 2) none of the existing solutions meet your needs.

Have a look at WordPress, Expression Engine, Vbulletin, Drupal, Joomla, etc.
#4

[eluser]InsiteFX[/eluser]
Take a look at PyroCMS on here!

InsiteFX
#5

[eluser]Tomed[/eluser]
Thanks for the recommendations so far but I have a question. I've taken a look at some of these CMSes and they seem to do a lot more than I need. I already manage my site's content, the CSS, etc. I just need an application that will deal with a users database, implement a WYSIWG editor, and used to update small portions of the site. Is there anything that fits my needs in this regard or should I start working on this stuff myself?

In short, I don't need something to manage my entire site, just a small section of it.
#6

[eluser]mi6crazyheart[/eluser]
[quote author="Tomed" date="1279039381"] I don't need something to manage my entire site, just a small section of it.[/quote]

If this is the thing then u should build a small custom CMS for u'r self...
#7

[eluser]BrianL[/eluser]
I think the answer you're looking for is if you can "skip making a CMS"

What I mean by this, is if you don't already know (and if you do great) the natural evolution of a PHP developer in training is like this: he spends a few months learning the language and brushing up on basic programming, then spends between a half year and a year building his own custom CMS. For 4 year comp sci majors this is usually done as a hobby over summer months, so they spend 1-2 years refining it. For certificate or web developer programs this is usually done as part of studies; many people end up using their school project CMS for their personal website.

So the real question you should ask yourself is if you have the knowledge and confidence to use third party products? I happen to think that every PHP developer should have a set of of a half dozen libraries minimum, mostly handling low-level issues. The minimum list I would think is: session handling, file uploading, authentication/authorization, security module (to deal with exotic security issues such as null byte attacks and character encoding), validation, sanitization (note validation is not the same as sanitization and should actually be separate steps). I think this for three reasons: most PHP developers I know go through this process of creating a CMS as part of learning, it's pretty fun, and most importantly you won't always be working with CodeIgniter and have to resort to basic PHP to satisfy some anal clients.

So I would say the answer to your question is this.

1. You don't have to go so far as to create a full blown CMS, but you do have to go as far as creating a reusable set of libraries.

(This is simply reusing code, an important concept procedural based programmers have known for decades but object oriented and more modern programmers seem to forget. Just because someone else has created a framework to cut down on the amount of code you need to write, doesn't mean the code you do write shouldn't be reused as much as possible!)

2. The libraries should be as loosely decoupled as possible so you can use them in as many future projects as possible, ideally independent of frameworks. If you are planning to use CodeIgniter for a half dozen projects, you could make CI versions of your libraries. If you are using CI for just one project I would write them for base PHP then "codeigniterize" them.

(In fact this would be the recommended way if you are already a PHP developer: codeigniterize your preexisting libraries.)

3. If you do create a CMS, it doesn't have to be working, nor do you actually have to use it. What a lot of people do is go through the process of creating their own CMS, then stumble on CI, CakePHP, etc. Skipping this step is probably not a good idea since it seems to be the natural evolution of a PHP developer. At the same time, wasting your time reinventing the wheel is not a good idea. So to get the best of both worlds, you could try creating a half assed CMS that you would never use in a production environment, particularly as part of a very good web tutorial (many tutorials go through making a CMS from scratch). Then when you're done this "learning process" you can decide whether to "harden" and improve your own CMS to the point you can use it, or switch to a full blown CMS, or convert your CMS to a set of libraries that you can drop into whatever framework you end up using.

So short answer: yes it is worth your time, but you don't have to create a full blown CMS that rivals open source projects, just a reusable set of libraries.

Hope this helps! Wink

Brian

___


P.S. The purpose of a framework is to increase productivity. Some people confuse this with writing code for them or abstracting out all low-level issues for them. This is simply not the case especially with PHP. For example take CI; the most impressive CI sites will have highly customized CI installs with custom libraries and custom classes. Bad developers "cut and paste" kinds use frameworks as a crutch. Good ones use frameworks to save time and meet deadlines or take advantage of the masses (sure I could spend time learning all 700+ web vulnerabilities but there's better uses of my time). Even the best framework cannot replace real knowledge and custom libraries. For example, look at yesterday's patch for the File Uploading class vulnerability. Any custom PHP developer would have dealt with file extension and renamed uploaded files properly to completely random name with no extension and have their own custom file uploader. PHP is simply too low level a language to rely exclusively on frameworks to catch everything, and anyone who hates this should think of moving to .NET a framework designed from the ground up to support multiple languages and abstract as many of these issues out as possible.
#8

[eluser]wghenderson[/eluser]
Take a look at http://osmek.com
It has an Api that is language neutral and is perfect for making existing projects dynamic. Check out the Osmek CI library http://ellislab.com/forums/viewthread/160685/
#9

[eluser]Leon Stafford[/eluser]
great comment above on why you should try to build your own CMS.

I am currently mid-project on a custom CMS and due to the size of it, sometimes wish I had just started in CI, but now I do have a very custom CMS which keeps evolving to do just what we need for this project.

For quick n nasty sites, I tend to use WordPress as the CMS (when no user-input is needed) just because it is so damned QUICK to install and start adding data to ( SSH in, wget the latest build, download a theme from WP admin). that takes less than 5 minutes in itself, then I use a few custom fields and modify the theme to display them. Can also quicky assign restricted users to fill it up with content.

The overhead makes performance drag when the sites get busy, but at that point, the site is usually "profitable" enough to warrant redesigning into CI or custom CMS.

No matter what framework/CMS you go with, you will eventually need to write your own customisations, so the above advice on not skipping the step of writing your own CMS is important I think. it allows you to know what/where to look for hooks, etc in the framework you end up using.




Theme © iAndrew 2016 - Forum software by © MyBB