What's the best CMS for our site
May 12, 2009 9:08 AM   Subscribe

What's the best CMS for our site? Yes, another one of those questions. No, I don't think Wordpress is the answer.

We're building a website. It needs to be in a number of different languages. The URL structure wants to be in the form of (for example):

example.com/ca/fr/product/price
example.com/fr/fr/product/price
example.com/de/de/product/specifications
example.com/ch/de/product/specifications

so we'd know the first URL would show the Canadian French version of the site (price in Canadian dollars, maybe Canada specific pages in the nav), the second would be the French version of the site (price in Euros, French specific pages) with both sharing the same template and language files etc.

We need to have a good work flow e.g. staging and approval of content (both new and editted) before it goes live and also ease in creating specific URLs.

It needs to be PHP-compatible - i.e. we want to (easily) be able to use PHP in both templates and content.

We also want very strong flexibility in terms of being able to design the site. (Obvious I know but still)

We're also slightly short of time, so a lowish learning curve would be appreciated.

We've looked at Expression Engine. This does 90% of what we need (I think) (including having a good learning curve), but has no easy stage-to-live feature (if you want to do both content and templates at the same time) that I can tell of. Also, having only used EE Core at this stage, I don't know how much I'd like using the Pages module to force /template/article to our URL structure.

It's for a commercial site so we're happy paying, however we wouldn't want to pay at this point multiple thousands of dollars. (Although if a product is awesome let me know as we may be doing a very similar but much bigger site in the future).
posted by Hartster to Computers & Internet (13 answers total) 8 users marked this as a favorite
 
You can do stage-to-live for new content in ExpressionEngine by having a status of Submitted and setting up a password-protected template for reviewers that displays entries whose status is Submitted. Then they could approve/reject/edit the submissions. (The status names are customizable.)

As far as I know there isn't an easy way to preview edits. If you change the status, then the entry isn't accessible on the live site. If you edit the entry, the edits are visible on the live site because it displays the latest version.

You can also preview changes to templates by making a password-protected copy of an existing template.

There are a couple different ways that EE could handle the URLs without using the Pages module: URL segment variables, template groups, or the Multiple Site Manager add-on.

ExpressionEngine templates are very flexible and can handle anything you can design in HTML/CSS.
posted by kirkaracha at 9:36 AM on May 12, 2009


Would an url like this work?

example.com/product/price/ca/fr/

There's a way to create multilingual sites in Expression Engine that uses segments (such as ca and fr) to determine the content that shows in the page, using conditionals.

For example: "if segment_3=ca and segment_4=fr, display fr_content".

You can use PHP in EE templates, but you must specify if you'll allow PHP in a template, and the parsing stage (input or output).

has no easy stage-to-live feature

What do you mean exactly? A way to create content and check it before publishing it? You can assign live view templates visible only to certain member groups, so you can preview your content before publishing it.

The Pages module is easy to use, but some people don't like it. You might be able to create the url structure you want with EE, but you should ask in their presales forum.

I've used EE for several projects and I like it a lot. It's very flexible and it has a lot of commercial and freeware add-ons. You can do whatever you want with the design, I usually start from scratch with my own html/css and just add the EE tags.
posted by clearlydemon at 9:36 AM on May 12, 2009


This extension might help to manage content before publishing it. I haven't used it yet but Leevi's add-ons are excellent.
posted by clearlydemon at 9:43 AM on May 12, 2009


Best answer: It might be worth checking out Drupal. You can see a case study of how Sony used (and expanded) the multi-language capabilities here.

The downside is that the learning curve will be steeper.
posted by Nothing at 9:44 AM on May 12, 2009


Just be careful when you try to share languages. French French is not Canadian French, and UK English is not US English.
posted by smackfu at 10:01 AM on May 12, 2009


Just wanted to second your conclusions about Expression Engine. I also evaluated it for a project, going as far as purchasing a licence and doing some test development, and found it required endless contortions to get around its 'everything is a blog' architecture (the Pages module thing is just crazy). However nice some aspects may be, in my view it has fundamental problems that rule it out for most non-blog/-community projects.
posted by malevolent at 10:10 AM on May 12, 2009


Silverstripe is PHP-based, multi-lingual(built in) and has a "draft" function available to any given document that lets you see it in its current edited state without actually pushing it out to the public.
posted by Su at 10:45 AM on May 12, 2009


EE wiki entries on multi-language site and multi-language site alternative, and a forum post about relative pros and cons.

in my view it has fundamental problems that rule it out for most non-blog/-community projects

I disagree. I'm using one EE installation to manage 10 interconnected web sites.
posted by kirkaracha at 11:09 AM on May 12, 2009


Best answer: And if you do use Drupal, for that deployment feature you're talking about, you want the newly developed deploy module. Check out this awesome screencast for a true deployment demo. If you just want content publication workflows, you can do that other ways as well with Drupal. And with pathauto you can come up with almost any way to create URIs. You can just pass certain portions of the URI as arguments to nodes or views (you'll quickly learn those if you go the Drupal path). As for the design, you'd just write whatever HTML you want.
posted by Brian Puccio at 6:57 PM on May 12, 2009


Response by poster: Would an url like this work?

example.com/product/price/ca/fr/


Well, it's not ideal. I would like it to be example.com/ca/fr/ as that's more "industry-standard". example.com/ca-fr/ and example.com/uk/ would also be an acceptable way of doing things. This leads to me to wonder whether there's a way of doing everything through the index template or if manually creating multiple directories as kirkaracha links to might not be the worst bet.

has no easy stage-to-live feature

clearlydemon: What do you mean exactly? A way to create content and check it before publishing it? You can assign live view templates visible only to certain member groups, so you can preview your content before publishing it.

It's not just before publishing it, but also editing content that is already in place. The extension you linked to looks like it should help, I just need to check when you edit an entry and submit it for approval if that can be displayed on the site for review by marketing/management, rather than require them to login to an admin center and just read (X)HTML.

However, in this scenario, it looks like if we want to make changes to templates as well, then we'd have to do that through a different process with staged template groups.

[I take this to mean that if we have a template group called "articles", we'd also have one called summat like "articles_stage" that is only viewable by logged in admin users]

The downside to this is, (a) it (near) doubles the number of templates we'd have, and (b) with no workflow we'd need to keep the template groups in sync manually. (e.g. if someone needs to make a minor change to a template (add a forgotten alt tag), they need to add it to the staged group and then C&P that to the live template. I *know* at some point someone will make a change just to the live template, someone else will work on the stage one and then overwrite the previous live change etc.

Is there a way (using the MSM or not) of having a separate staging site (say, example-stage.com or stage.example.com) that can use the same EE installation as the live site but (using htaccess or otherwise) log the viewer in automatically as a moderator? I know this might sound ginchy but we're used to a setup where management can just go to a stage site (accessible by IP blocks or a password for remote access) and approve content via email etc. Telling people they have to go to /system/ on their Blackberry first and check they're logged in first and then go to the URL doesn't sound a big deal but to some it is.

[Drupal looks like it might have a few more features, and the i8ln stuff that Sony did seems very interesting, but it does seem like there's maybe a harder learning curve. As we're short of time at this stage it maybe we go back to Drupla later for the bigger site if EE can't deliver what we need adequately.]
posted by Hartster at 2:43 AM on May 13, 2009


EE lets you embed templates, so you could use the same template components on the staging and live sites, and you could use embed variables to have things show up on one site or the other.

You could use the free LogMeIn plugin (which logs people is as a user group you specify) or the built-in HTTP Authentication to control access.

For approvals, you can change the status from the front end.

Setup Domains and Sub-domains in MSM.
posted by kirkaracha at 11:23 AM on May 13, 2009


I just found the Structure Module for ExpressionEngine, that helps to organize pages using a tree view. I have never used it, but it might be a better solution than the Pages module to create a custom url scheme.
posted by clearlydemon at 1:15 PM on May 21, 2009


Response by poster: I've marked the Drupal ones as the best answers as that now looks like the route we'll be taking here (thanks purely to the shove in that direction from Nothing and Brian Puccio - I'd look at Drupal a few years back for something else and dismissed it so it had never crossed my mind here)

Although I really like Expression Engine, (and built a pretty complicated site in it as a test for our sports club to be maintained entirely by non-technical users) in this case (deployment, i18n, complex URL schemes etc) it looks like Drupal offers the extra flexibility that we need.

At this stage (unless I become a true Drupal convert) I'd definitely still use EE for most new sites I'd build, especially once 2.0 arrives. After a week of evaluating Drupal I'm still not 100% sure how everything fits together (it's got a *much* harder learning curve than EE in my opinion) but I get the feeling it's superpowerful and I'm impressed at the quality of the modules (if not necessarily the documentation)).
posted by Hartster at 9:32 AM on May 22, 2009


« Older I was looking for a job and then I found a job...   |   Please help me figure out what to charge for video... Newer »
This thread is closed to new comments.