Custom CMS or no?

Hello everyone,

I’m a long time reader of the forums here, despite not registering until now, I’ve gotten a lot of great advice from here already. So thank you to all the contributors and downright ninja-like developers here! Also, thank you in advance to anyone who’s able to help me out. I’m going to try and describe my issue as easily as possible, if anyone needs more information please let me know.

I hope to be able to contribute some of my knowledge in the future, rather than asking questions. :slight_smile:

My background consists mainly of HTML/CSS with a some knowledge of PHP and some of Javascript (although I’m more comfortable using jQUERY). I guess you could say that I’m more of a designer that can develop rather than a developer that can design. I’m not sure how much this is going to come into play, I’m typically able to figure things out on my own with a little help.

Here’s the scoop:
I currently have a client that needs to be able to handle some very rudimentary content management on their site. I’m currently moving past the design phase, so now it’s time to start coding the site together. I myself am rather inexperienced when it comes to developing for any CMS. I thought that this project might be a perfect stepping stone into a greater comfort level with a CMS.

So here’s what my client needs. It’s really only the ability to be able to create/edit/delete product listings for a single page (no e-commerce, just listings). I’ve worked out the various parts of each listing to the best of my ability:

  • Product ID (for sorting)
  • Name
  • Description
  • Price
  • Photo (Upload)
  • Special? Yes/No

The “Special? Yes/No” (viewed in the control panel) would just be a tick box that would style it slightly differently, and place it at the top of the page.

Here’s where I’m stuck. Basically the above looks to me like it could be accomplished by just creating a form that places that information into a database. Then the database would be queried, and all the information brought up on the products page. It seems fairly simple in the abstract form, but as to how I would actually do this is somewhat beyond me. I’m not sure if it makes sense to integrate an entire CMS for one page, or if it might be better for me to just create this from scratch.

Could anyone help me out with a little brainstorming? Also, if you’re inclined to think I should develop this from scratch, could anyone suggest how I might want to structure the database?

Thanks in advance! :smiley:

Hi NineCreative. Welcome to the forums. :slight_smile:

You may get various answers, but in my view (as a HTML/CSS guy), building the CMS yourself would be like reinventing the wheel. It’s much quicker to install a CMS that already has inbuilt functionality for doing this. Some of them are free anyway, and it also means that if someone else takes over the site, they will know what they are dealing with. A full CMS also means it’s easy to extend the site later. So I’d definitely say use an off-the-shelf CMS for this. As for which one, I prefer ExpressionEngine, but it has a price tag. Another one worth a look, which is much smaller and simpler, is Perch.

Well just off the top of my head you will also need a user authentication system to prevent anyone from creating products. Not to mention a way to handle and validate uploads which can be tricky.

Sounds like that eventually this will become a store front. So I would recommend setting it up that way from the get go. I don’t really think building a custom CMS is the way to go unless you have extensive experience with server-side programming already in the language of choice. Using this a way to learn is just going to make someone else’s job more difficult down the line and probably wanting to strangle you.

I hate Wordpress but the requirements here actually seem pretty appropriate to that system. I myself could probably put what your talking about together in Drupal in about an hour but Drupal has a huge learning curve which is why I would recommend WP.

By the way “product id” should *really be the primary key of the table which would hold product data. It probably isn’t appropriate to make that a user defined value but an auto increment column. Than have a separate column like “sku” for the user defined unique identification string of the productas a unique key.

Thanks for the suggestions ralph.m! As well as the welcome! :slight_smile:

I’ll take a look at Perch, as well as ExpressionEngine. Since ExpressionEngine is per license I can always pass that cost onto the client. How much is a single license, does anyone know offhand? I don’t want to register at their store to be able to see the price. :stuck_out_tongue:

Sorry, I should have clarified. The Product ID wouldn’t be a user defined attribute, it would be the automatically assigned ID in the table.

Would there be a way to use WP that would allow posts to be made only on that one page? My client is very wary about over complication and steep learning curves. While I explained that (as with any new system) there will be some kind of learning curve, I also said I’d try to make it as easy as possible.

I also can’t say whether this will become a store front online. I tried to push that in our initial meeting, but I guess they don’t want the hassle at this point. I do want to make sure that they can scale up with this though.

Any other ideas?

Yes, it’s about $299—though this is published on their site, I’m sure. As you say, it’s the client that pays, and that’s a small price, really. But it may be more than needed here, so Perch is worth a look, as it’s vastly cheaper.

You can use some commercially available eCommerce plugin for this, like say wpEcommerce using WordPress. If not, there is one hosted ready solution available, SquareSpace. Squarespace’s users are all paying a monthly fee. Squarespace is positioned as an alternative to paying some developer few thousand dollar to make a site.

I strongly advise against creating a custom CMS for your client project (now), simply because that would require you to be solid with whatever language you choose to write it in. And I’m sure there’s a deadline involved as well? Instead, I’d go with what Ralph has suggested. ExpressionEngine is a mighty fine CMS with which you can do almost everything.

Other CMSes you might like to take a look at are: MODx and Drupal (can’t recommend the latter because I don’t use it, but it seems to have a good reputation as well).

Perch is a very small CMS, so make sure it fullfills your requirements. Another good one is Statamic, a relatively new CMS that’s gained lots of hype recently but, here too, you need to see if it can fullfill your needs.

With that said, I still think it’s good to learn a language thoroughly and then creating your own (just not for client work before you have a good understanding of a language) and I don’t think it has anything to do with reinventing the wheel. The lessons you learn while building your own CMS are definitely worth it, regardless of whether something like it already exists.

I’m actually doing the same thing right now. I’m still using ExpressionEngine for my own sites, however, I’m learning Python on the side as I’m planning to create my own CMS. It’s fun learning.

Great advice! Very much appreciated.

There is a deadline, of course, but I should have plenty of time. The client is having trouble holding up their end of the bargin as far as supplying content, so they’re expecting that the deadline will be pushed back. Unfortunately, as much as I’d love to use ExpressionEngine, I can’t justify the cost to myself or the client.

I have heard some good things about MODx, but I’m still on the fence between that and Perch. MODx is free, which is a bonus (because be able to try it out before choosing it).

One other option I would have is hiring a developer to code my PSD into a theme/template for whichever CMS is chosen. Or I could code my PSD into HTML/CSS then pass it along to a developer. I end up losing out on the learning experience and some of my profit, but the project would be completed faster.

<snip/>

Thanks for all your help, Ralph, oddz, WebCrawler and kohoutek! It’s really appreciated! If anyone has any other suggestions for me, please feel free to share!