views:

1595

answers:

14

I'm part of a group that's considering a PHP-based system to serve a community for communications purposes, including collaboration, event calendars, and a photo gallery. We're also loking into social networking integration (particularly Facebook) and maybe payment processing for community events.

The two main CMSs we're considering are Wordpress and Joomla. We're also thinking of building on top of Symfony or Zend. Which PHP-based system has the best documentation so that those of us with limited knowledge of the frameworks can ramp up easily?.

Preferably something that's object-oriented and has a gradual learning curve.

And what about MediaWiki--would that be appropriate to use for the described purpose?

+9  A: 

Drupal's documentation is quite hefty, and backed by probably the largest community of developers amongst PHP-based CMSs.

The API reference is located here.

Nick Sergeant
+1  A: 

I'm a huge fan of the Drupal API. It's well documented, with a nicely searchable API site and loads of user-submitted documentation in the handbooks. I found it pretty trivial to learn. There are good modules for all of the capabilities you've mentioned.

Joomla!, on the other hand, was a nightmare. Having to hack core code, install poorly written (and often $) third-party modules, and an inflexible system of just a couple hooks... ugh. I advise anyone who intends to do more than a quickie brochure site to stay away from Joomla!.

WordPress would take a lot of work to turn into the sort of system you're talking about. It's probably not your best bet in this situation (and I love WordPress - but it's blogging oriented).

ceejayoz
I cannot stand Drupal's structured programming style. I know they say on their site that some of their conventions mimic OOP, but there is really no replacement for the real thing.
Peter Bailey
What are you not able to do efficiently with the Drupal API that you'd be able to do better with OOP? OOP just for the sake of OOP is silly.
ceejayoz
@ceejayoz: I could also say that just because something works fine in procedural, doesn't mean it wouldn't be better in OOP.
mike
That doesn't answer my question in the slightest. What would be improved in Drupal by switching to OOP?
ceejayoz
+7  A: 

Wordpress

  • can be a bit limiting as it's really designed around the blogging idea. extending it beyond that can be often quite clunky

Joomla

  • your users may prefer this if they are less technically inclined (by default it has a very "eye-candy" like UI. developing for it can be problematic apparently (no direct experience)

Drupal

  • a relatively steep learning curve, but a very powerful system once you get over it. allows for a wide range of development and has a good community behind it
  • support for things like media/images is surprisingly clunky

Roll Your Own!

  • Zend probably has the more feature rich framework, really it depends on your developers in this regard, i'd suggest just using whatever they are more familar with.

personally i'd suggest drupal or rolling your own if you feel your app will be extended in different ways beyond the initial scope in the future.

Owen
This comes closest to what I've decided to do--documentation is great but we have a Wordpress expert on our team : )
Mark Cidade
Drupal: you meant a flat learning curve, right?! because it's hard in the beginning...
tharkun
if the y-axis represents the time spent learning the system and the x-axis, what you can actually do with that knowledge, then Drupal does indeed have a steep learning curve.
mike
+1  A: 

I know it's an interpreted framework, but using CakePHP works wonders for some specific situations.

+1  A: 

Don't use Joomla. I was going to write a long description of why you shouldn't, but I always feel mean criticising open source stuff (it's free after all), but seriously, it's really horrible. I feel the same about Wordpress.

There's not much point using a framework to build a CMS from scratch when you could easily cannibalize another CMS and save yourself a lot of effort re-inventing the wheel. Drupal has awesome documentation.

thesmallprint
+9  A: 

CodeIgniter has excellent documentation.

eyelidlessness
I very much agree. It is probably the reason why CI users are growing rapidly.
Thorpe Obazee
And the fact that you can get comfortable using it in a day or two.
Domenic
@Domenic, assuming you like the CI way of doing things.
eyelidlessness
+4  A: 

Codeigniter has fantastic documentation: http://codeigniter.com/user_guide/

Buzz
+9  A: 

Symfony has the best documentation of all the (PHP) open-source projects I've worked with, which would include

  • Drupal
  • Wordpress
  • Zend Framework
  • Code Igniter
  • Cake PHP
  • Joomla
  • OS Commerce
  • PEAR
  • PHP Application Tools
  • eZ Components
  • Smarty

And probably a few others I can't think of at the moment

Why I think it's the best

  1. Both user and API docs available.
  2. Well organized
  3. Nicely formatted (easy to visually "parse" hints, notes, and code examples from the rest of the documentation text).
  4. Functional examples
  5. Diagrams that explain processes better than any amount of words could
  6. Some great cheat sheets available
  7. Easy to switch between versions (1.0, 1.1, 1.2)
  8. Available as a book, if you want it.
Peter Bailey
+2  A: 

I've use both Drupal and Zend Framework.

Drupal (and the Drupal community of contributions) will meet your needs for a discussion forum, photo gallery and calendar. It would be far better than Zend Framework for the people with limited knowledge. You can play with it, almost as an application, or go in the backdoor and hack the database tables and controllers. Whatever meets your needs.

Zend Framework has a steeper learning curve. You have to know OO PHP plus understand how the framework works. IMHO only now it there getting to be good documentation available.

Michelle
+6  A: 

Symfony is a very powerful MVC framework inspired by Ruby on Rails. It's quite easy to learn and has great documentation that's also available as a book. There's also a very friendly IRC Channel on freenode.net. You might also want to take a look at CodeIgniter, which is probably the fastest of the popular frameworks. SilverStripe is a combined CMS / MVC Framework also worth a visit.

The aforementioned Drupal is a really really great CMS that has very good documentation and a lot of modules for almost anything. And of course Typo3 is always an option, but you most probably want to avoid the task of becoming acquainted with it.

If you're not limited to PHP, I've read a lot of good things about Plone, a CMS written in Python for the Zope application server. But I haven't really tried it out myself.

cvk
The only thing that should be noted about Plone is that it's notoriously resource intensive for a small website. For an enterprise level website, it's pretty good though.
Jason Baker
+3  A: 

Zend Framework is probably the most powerful and flexible framework but with regards to documentation... not so great. It HAS a large amount of content re: documentation but it is not especially user friendly.

An example (from this page). They say to do the following:

// Place this in your bootstrap file before dispatching your front controller
$writer = new Zend_Log_Writer_Firebug();
$logger = new Zend_Log($writer);

// Use this in your model, view and controller files
$logger->log('This is a log message!', Zend_Log::INFO);

Assuming you have properly setup and configured FirePHP and Firebug this will still not work. Why? Because when you go to call $logger in the model, view or controller ZF won't know what $logger is. They left out the part about putting a reference to $logger in your registry so you may then call it from wherever you like.

I suppose they expect this to be obvious and it is to more experienced developers but to newer folks trying to learn the ropes this would be a frustrating brick wall. This is a problem throughout the Zend Framework documentation. Quite a lot is assumed and if you missed that one key piece of info back on chapter 9 section 8.3 that pertains to what you are reading about in chapter 23 section 4.9... you are in for a hunt (though I suppose you could just post the question to stackoverflow and get your answer quick and friendly like!)

gaoshan88
Agreed entirely on the Zend documentation. I was pulling hair out.
ceejayoz
+4  A: 

Expression Engine is also another good one that provides a responsive forum, and for licensed users technical support. The free version of EE provides a solution to 99% of what you need to do, but if you need a license, it is not that expensive. I use it for one of the web sites I am developing.

The documentation they provide is community based, so it is always being updated.

http://expressionengine.com/docs/

Brad
+1  A: 

In terms of features, customizing Drupal can be a bit of a steep learning curve, certainly Joomla and Wordpress are easier to learn how to do mid-range customizations. However, Drupal is a far more powerful framework, and the features you want are either part of core, or come in nice neat packages called modules. Installing a module means uploading the files to a special directory on the server, and visiting an administration page, so it's pretty easy.

Happily, Drupal has a module for the Facebook integration you are looking for, which is the most difficult part of your request. Drupal is also in the middle of (behind the scenes) a site upgrade, which is going to include some much needed improvements to the user contributed documentation (as opposed to the API documentation which is amazing already).

Drupal is also object orientated to some degree, with more and more code being converted to object form over time.

David Wees
+1  A: 

Codeigniter's documentation is really fantastic (as fantastic as Codeigniter itself).

netsuo