El gestor de continguts drupal permet servir diversos sites amb una mateixa instal·lació base, fet que simplifica el manteniment i les actualitzacions de tots els llocs que en depenen. Per un projecte en el qual estem treballant, era necessàri muntar un web que a la vegada tingui una sèrie de subwebs corresponents a diversos projectes que estan duent a terme, de forma que tenim una estructura com la següent:
Una característica important d'aquest desenvolupament és que tant la web com les subwebs comparteixen la major part de la informació: usuaris, continguts,..., però a la vegada tenen una estructura i una presentació diferent. Els passos seguits per aconseguir el resultat desitjat han estat: 1. dins el directori sites/ del drupal, crear un subdirectori amb el fitxer settings.php per cada subprojecte, de manera que ens queda:
2. per cada fitxer settings.php: sites/default/settings.php
$db_url = 'mysql://usuari:password@localhost/bbdd';
$db_prefix = ''; $base_url = 'http://www.projecte.com';
sites/www.projecte.com/subprojecte1/settings.php
$db_url = 'mysql://usuari:password@localhost/bbdd';
$db_prefix = array( 'cache' => 'subprojecte1_', 'variable' => 'subprojecte1_', );
//$base_url = 'http://www.projecte.com'; /* atenció!! aquesta línia la comentem */
sites/www.projecte.com/subprojecte2/settings.php
$db_url = 'mysql://usuari:password@localhost/bbdd';
$db_prefix = array( 'cache' => 'subprojecte2_', 'variable' => 'subprojecte2_', );
//$base_url = 'http://www.projecte.com'; /* atenció!! aquesta línia la comentem */
3. a la base de dades, creem les taules extra que necessita cada subprojecte (això pot variar en funció del que vulguem fer)
4. definim un tema per a cada subprojecte. Això es pot fer dins de la carpeta comú themes
5. al directori arrel, creem un enllaç simbòlic per cada subprojecte
ln -s . subprojecte1 ln -s . subprojecte2
nota: si no es té accés al servidor com a administrador, es pot utilitzar aquest truc Crear un fitxer php (p.ex. mkdir.php) amb el següent codi i executar-lo:
6. configurar cada web de forma independent.