Multi-squelettes

Ceci est une « contribution pédagogique », qui montre par l’exemple comment développer une nouvelle fonctionnalité pour SPIP.

Méthode pour changer de squelettes dynamiquement, ici en fonction du nom de domaine utilisé.

Cette contribution a pour but d’aider ceux ou celles qui se trouveraient dans le même cas que moi.

Énoncé du problème

Mon souhait était le suivant : « Utiliser un seul espace-privé pour gérer les informations de plusieurs domaines et sous-domaines internet et donc avec des squelettes spécifiques pour chaque domaines ou sous-domaines ».

En posant la question sur le canal IRC, on m’a orienté vers le plugin multidomaine qui permet de déclarer un jeu de squelette différent pour chaque secteur d’un site spip.

C’était très proche de ce que je souhaitais mais limité au fait d’être lié à une organisation par « secteur ». Or dans mon idée il s’agissait de pouvoir s’affranchir de cette limite pour par exemple proposer des squelettes de « micro-sites » centrés uniquement autour d’un article et de ses dépendances (événement, documents, etc...).

J’ai donc poursuivi mes recherches et fini par trouver la solution suivant qui se révèle être assez simple au final.

Pré-requis

Afin de comprendre au mieux les éléments de cette contribution, je vous conseille les prérequis suivant :

  • une bonne connaissance de spip et du fonctionnement de ses squelettes
  • des bases en programmation PHP

Configuration des domaines

Pour commencer, il va falloir configurer les redirections de domaine.

Chez OVH par exemple il faut passer par l’option multi-domaine du compte qui comporte l’hébergement. Il faut attribuer la redirection des domaines et sous-domaines associés à votre SPIP vers son répertoire d’installation.

Par exemple vous pouvez effectuer les redirections suivantes :

Le dossier squelette

SPIP nous permet de modifié le chemin des squelettes utilisateurs par le biais de la variable $GLOBAL[’dossier_squelettes’] qui est égal par défaut à la valeur squelettes. Cette variable peut être redéfinie dans le fichier config/mes_options.php.

Par exemple si vous souhaitez ranger vos squelettes dans un répertoire banane, situé à la racine de votre installation SPIP il suffit d’utiliser le code suivant dans le fichier config/mes_options.php :

<?php
	$GLOBALS['dossier_squelettes'] = 'banane';
?>

Configuration multi-squelettes

Maintenant que nous avons redirigé les domaines et sous-domaines souhaités vers notre installation de SPIP et que nous savons modifier le répertoire des squelettes utilisateurs, il nous suffit d’écrire un test conditionnel pour changer ce répertoire en fonction du sous-domaine.

Le nom de domaine, tel qu’il apparait dans une adresse URL, est stockée dans la variable php $_SERVER et plus précisément dans $_SERVER['HTTP_HOST']. Ajoutons un petit switch dans notre fichier config/mes_options.php :

<?php
switch ($_SERVER['HTTP_HOST']) {
	case 'www.mondomaineprincipal.com':
		$GLOBALS['dossier_squelettes'] = 'mondomaineprincipal';
		break;
	case 'www.mondomainesecondaire.com':
		$GLOBALS['dossier_squelettes'] = 'www.mondomainesecondaire.com';
		break;
	case 'sous-domaine.mondomaineprincipal.com':
		$GLOBALS['dossier_squelettes'] = 'sous-domaine.mondomaineprincipal.com';
		break;
	default:
	   $GLOBALS['dossier_squelettes'] = 'squelettes';
}
?>

Et voila le tour est joué :-)

Discussion

Aucune discussion

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom