Le multi-site avec MODX

Grâce à son système de contextes, MODX Revolution permet la gestion de plusieurs sites à partir de la même installation du système. Nous allons voir dans cet article comment faire.

Le système de contextes

Ce système permet de clairement séparer les ressources dans leur arbres (voir image ci-dessous). La première section correspond aux ressources crées pour le site principal, alors que la/les suivante(s) correspond(ent) à/aux autre(s) site(s) rajouté(s) au système par la suite.

Arbre multi-contextes

Création d’un nouveau contexte

Pour créer un nouveau contexte, se rendre sur la page de gestion des contextes, accessible dans le même menu que les paramètres systèmes (voir image ci-dessous). Une fois sur cette page, appuyez sur le bouton « Créer », puis renseignez la clé (attention de bien la choisir à cette étape, sinon pour la modifier il faudra passer directement en base de données), le nom (utilisé dans l’arbre de ressources), ainsi que la description (apparaît au survol dans l’abre de ressources).

Accès gestion contextes

Paramétrage du contexte

Maintenant que notre contexte est créé, il nous reste encore à le paramétrer. Pour ce faire, faites un clic droit sur le contexte nouvellement créé, selectionnez « Mise à jour du contexte », et pour finir, rendez vous sur l’onglet « Paramètres du contexte ».

Il vous faut maintenant créer les paramètres suivants, donnés sous la forme clé – valeur:

  • base_url – /
  • http_host – votrenouveaudomaine.fr/
  • site_name – Votre nouveau super site
  • site_start – XX (correspond à l’ID de la première ressource créé dans le nouveau contexte)
  • site_url – http://votrenouveaudomaine.fr/

Vous pouvez également dans ces paramètres régler différemment un paramètre système (comme la réécriture d’URL).

À la fin de cette étape vous devriez avoir (à l’exception de la dernière ligne) la liste de paramètres suivante:

Options contexte

Rendre le nouveau contexte accessible

Maintenant que notre nouveau contexte est correctement paramétré il reste encore à le rendre accessible. Cela se passe dans le fichier index.php à la racine de votre installation MODX.

Vers la ligne 64 environ, remplacer

/* Initialize the default 'web' context */
$modx->initialize('web'); 

par

/* setup for multiple domains */
switch(strtolower(MODX_HTTP_HOST)) {
    case 'votrenouveaudomaine.fr':
    case 'www.votrenouveaudomaine.fr':
        $modx->initialize('clé-nouveau-contexte');
        break;
    default:
        $modx->initialize('web');
        break;
}

Il est important de prévoir le fait que votre nouveau domaine soit aussi accessible avec les 3 w. Lors de la création du second site sur mon installation MODX je n’avais pas prévu ce cas, et en faisant quelques recherches Google pour vérifier l’état du référencement du nouveau site, j’ai eu la désagréable surprise de trouver des pages de mon site principal accessibles sous le deuxième domaine.

Edit du 5 décembre 2022 : depuis la dernière version majeure de MODX (la version 3), l’aiguillage n’est plus à placer dans le fichier index.php (qui doit être modifié à chaque mise-à-jour du CMS) mais dans un fichier config.context.php situé à la racine de votre installation MODX.

Le code reste structuré de la même manière avec un switch, mais au lieu de faire appel à la méthode initialize() de l’objet $modx, il faut utiliser un return.

switch($_SERVER['HTTP_HOST']) {
    case 'domaine1.com':
    case 'www.domaine1.com':
        return 'contexte_1';
    case 'domaine2.fr':
    case 'www.domaine2.fr':
        return 'contexte_2';
    default:
        return 'web';
}

Laisser un commentaire