We're looking to move to a CMS (for a new site) after years of using handrolled solutions for out other sites. We have some fairly specific requests, and I just want to check whether Drupal can handle our needs, and also if anybody has any tips/case studies that can help.

Firstly, we normally have a separate stage site (not server) for management/marketing to look at when they need to approve changes. So as well as example.com we'd also have example-stage.com. How does approval processes work in Drupal? If we make a change to both the template and some content and mark this as staged/pending/draft and have it viewable by specific people only?

What I want (really need for "political" reasons) is an easy way for management to go to example.com/page and then example-stage.com/page to compare and approve. I don't want them to have to login to the site to see one version, then logout to see the other then log back in again etc. Is this possible? Can we "stage" everything (e.g. css files)?

Secondly, we have a fairly specific URL requirements. As an international site we'd want our URLs to be in the form of, say,

example.com/us/en/product/specifications
example.com/ca/en/product/specifications
example.com/ca/fr/product/specifications

So the page would be the same but the language would be different in the third example, and pricing (and maybe navigation) would be different in the last two etc. Is this easy to configure? Can we set up the logic so uses a country variable in the URL to set certain things and the language variable for others etc?

Comments

mradcliffe’s picture

I'll address your second question.

By default Drupal makes basic paths to nodes like 'node/3' and lets you manually craft aliases. However, there's a nifty module called pathauto that will auto-generate a tokenized path when you save content. I believe it hooks into Drupal's internationalization fine. Though I'm not familiar with making multilingual sites (Drupal core, content translation and locale).

As for your first question, do you mean that you want two separate domains, one for testing and one for production, but have a way of authenticating into the test domain for certain people only? Or is something like subversion okay for deploying a site to a live location and test location?

apemantus’s picture

Thanks for the help.

In terms of the first question: subversion is probably going to be the case in the future, but not at the moment.

What we'd want ideally is:

- two separate domains (the live one and the stage one)
- the ability to add pages and edit existing ones (and templates and css) so that they appear on the stage domain and not the live domain
- people seeing the stage domain are automatically logged in as administrators/moderators etc so they can view draft material etc [we'll limit acccess by IP or password]
- easy pushing/deployment from staged to live

Would we want two Drupal installations and then push from one to the other, or would we want one installation being used by two sites?

The former seems the 'safest' but we'd want a way to make sure they kept in sync properly (i.e. people can't edit "live" but it has to be puished from "stage") and also that only pages (and templates and css) passed as approved can be pushed from stage to live.

mradcliffe’s picture

I don't know if you can push *content* from stage to live without some sort of rss import utility.

Theme-wise it's easy to push styles and php template files via svn or cvs or just copying them from one web directory to another.

However it's not the same for pushing things like views, rules, pathauto aliases, etc... An up-and-coming method is patterns, which should be able to export a drupal site's configuration and import it into another site via YAML or XML. Otherwise you have to approach settings or components like views or rules on a module-by-module basis (i.e. each module may have an export/import for settings and it's probably different from the rest).

At the moment, if I wanted to use a new view that I created on a test site, I would export it, copy the text, go to the new site, use views importer, and paste the text in. Then modify as necessary. Same with a rules export, but through a different interface. This is not smooth imho.

Perhaps for views you could just develop on the live site with permissions set on the view to restrict access. But that's just views, not rules or something similar.