Birmingham: Recently at Fortune Innovations we had the opportunity to create a multi-country site to support one famous FMCG website Launch in Latin America. One of the main requirements we had was to enable the selective publication of content across all countries or for just a specific Latin American country. For example, all the Frequently Asked Questions are common to all the countries available on the site, so we want to publish one time and make this content visible for all countries; but there is also some content, such as News and Events, that we want to display only for specific countries.
At its heart, this is a relatively common requirement for Drupal: the need to display content based on some criteria. Fortunately, Drupal offers a number of different ways to resolve this. Below we discuss the different approaches we evaluated for this project and the reasoning behind our final decision.
The possible architectural approaches we considered for this project included:
Using Drupal’s in-built multi-site feature with different domain names
Each country, as a separate site, would run on the same codebase and use the same theme, but have a distinct database, with individual content. Common configurations would be exported to code as features and then per-site configuration overrides could be handled either in the database or in the country-specific settings file at sites/site.example.con/settings.php. While it is true that certain tables could be shared between sites, such as the user related tables, the general problem with this model is that sharing content between the sites is complicated.
Using Domain Access
This is a powerful module that allows multiple subdomains to co-exist within the same Drupal instance, and for every piece of content in the system, it provides a special field that allows you to define which domain(s) the content can be “affiliated” with. Content can belong to one single domain or to multiple subdomains. Domain Access then uses Drupal node access configurations to ensure that each and every request for a node page (e.g. node/1) is only accessible at the domain(s) to which it belongs.