Dans le cas d’une mutualisation pour différents domaines, la bidouille suivante permet de disposer à la fois d’un répertoire de plugin “centralisé” (comme c’est le cas général dans la mutualisation) mais également d’un répertoire /plugins pour certaines des instance de mutualisation (i.e. les sites mutualisés pour lesquels on estime pouvoir faire confiance au webmestre...).
Installation
Testé pour le plugin Mutualisation installé pour avoir des sites avec domaines différents avec la configuration suivante:
- le SPIP “principal” est installé dans /var/www/toto
- dossier /mutualisation à la racine du SPIP “maître” /var/www/toto/mutualisation
- les sites mutualisés ont chacun leur nom de domaine et un vhost apache qui pointe sur /var/www/toto
- chaque site correspond à un sous-dossier de /sites portant le nom de domaine du site: /var/www/toto/sites/mon-site.tld [1]
- un dossier /plugins (= “central” pour la suite) également à la racine de ce SPIP: celui-ci est utilisé par tous les sites mutualisés (i.e. les plugins dedans sont visibles dans tous les sites) /var/www/toto/plugins
- la config du apache et des vhost authorise le suivi des liens symboliques (Options FollowSymLinks)
Mise à jour par SVN
« Dans mes mutualisations, j’ai un dossier /plugins/auto dans lequel je mets mes plugins additionels, que je mets à jour par svn.
/plugins/autose trouve au même niveau que /plugins-distPour chaque site mutualisé, j’active les plugins (qui se trouvent dans le dossier
/plugins/autocommun) dont j’ai besoin.Je ne créé pas de dossier
/plugins/autodans chaque dossier de site.Et donc, je ne mets à jour chaque plugin présent dans /plugins/auto qu’une seule fois par svn, et la mise à jour se fait pour tous les sites mutualisés.
Depuis SPIP 2.1: utilisation de la constante _DIR_PLUGINS_SUPPL
A partir de cette version, chaque SPIP peut déclarer un ensemble de dossiers supplémentaires dans lesquels peuvent êtres placés des plugins.
Pour cela il faut définir _DIR_PLUGINS_SUPPL dans le mes_options.php du site: par exemple pour utiliser le dossier /plugins dans le site mon-site.tld cela donnerait:
(dans les 2 exemples suivants on suppose le site mutualisé installé dans le sous-dossier /sites du SPIP “central”)
define('_DIR_PLUGINS_SUPPL','sites/mon-site.tld/plugins/');
Il est possible d’utiliser plusieurs dossiers avec “:” comme séparateur: Par exemple si on veut utiliser le dossier /plugins du site mon-site.tld et le dossier /le_depot situé à la racine de la mutu cela donnerait:
define('_DIR_PLUGINS_SUPPL','sites/mon-site.tld/plugins/:le_depot/');
Important!: les chemins utilisés dans _DIR_PLUGINS_SUPPL:
- sont définis relativement à partir de la racine du SPIP
- doivent se terminer par un / (ainsi que tous les chemins définis dans des constantes SPIP)
A partir de SPIP 3.0.6
Se référer à la documentation : http://www.spip.net/fr_article5296.html
NOTE : pour utiliser un squelette empaqueté en plugin, les deux constantes semblent nécessaires dans le mes_options.php de chaque site mutualisé :
define('_ROOT_PLUGINS_SUPPL',_DIR_RACINE.'site/'.$site.'/plugins/');
define('_DIR_PLUGINS_SUPPL',_DIR_RACINE.'site/'.$site.'/plugins/');
[1] en vérité c’est un peu plus complexe puisque ces sous-répertoires ne contiennent que des liens symboliques pour IMG,local, tmp et config) qui pointent vers les sous-dossiers correspondants du répertoire spécifique du domaine: l’utilisateur qui gère le site possède donc un accès FTP dans ce répertoire et peut le gérer comme un spip “normal”