SPIP-Contrib

SPIP-Contrib

عربي | Deutsch | English | Español | français | italiano | Nederlands

286 Plugins, 197 contribs sur SPIP-Zone, 325 visiteurs en ce moment

Accueil > Administration et BDD > Mutualisation > Un noyau SPIP 1.9, plusieurs sites !

Un noyau SPIP 1.9, plusieurs sites !

12 juillet 2006 – par Matthieu Marcillaud – 77 commentaires

1 vote

Pouvoir n’utiliser qu’un seul noyau de SPIP pour héberger plusieurs sites est une des grandes améliorations de SPIP 1.9. Voici une procédure pour utiliser cette fonctionnalité sur un hébergement qui permet l’url rewriting.

Nota SPIP-Contrib : la mutualisation évolue (dans la branche 1.9.3 dev), voir le dernier article sur ce sujet La mutualisation facile : modifications manuelles

Introduction

Pour ma part, j’ai mis du temps à comprendre le fonctionnement et à pouvoir rendre cela fonctionnel. Un tutoriel ne sera donc pas de trop pour ceux qui veulent aussi tenter l’expérience (testée sur Ouvaton).

Ce tutoriel s’adresse plutôt aux hébergés qu’aux hébergeurs, qui, je suppose, utiliseront les Alias ou VirtualHost d’Apache.

Ce tutoriel s’inspire du ticket 186 qui utilise des Alias.

2Déroulement2

J’ai installé un SPIP 1.9 avec plusieurs sites de deux manières : SPIP à la racine du compte, ou dans un sous répertoire. Peu de choses changent en fait, mais il est utile de les connaître !

Cas (1), à la racine du serveur :

-  http://mon_serveur.org/

avec les sites spips de type :
-  http://mon_serveur.org/mon_site/ ,
-  http://mon_serveur.org/mon_autre_site/

Cas (2), dans un répertoire du serveur :

-  http://mon_serveur.org/mes_spips/

avec les sites spips de type :
-  http://mon_serveur.org/mes_spips/mon_site/ ,
-  http://mon_serveur.org/mes_spips/mon_autre_site/

Remarquez que vous pouvez utiliser l’adresse http://mon_serveur.org/ ou http://mon_serveur.org/mes_sites/ pour avoir un SPIP aussi à cet endroit. Il vous suffit d’aller dans http://mon_serveur.org/ecrire/ ou http://mon_serveur.org/mes_sites/ecrire/ et de configurer.

Si vous avez déjà un site en SPIP 1.9 configuré, vous pouvez aussi suivre ce tutoriel pour en creer d’autres, dans un sous-dossier. Votre premier site continuera de fonctionner correctement.

21- Création des dossiers accueillant les sites2

Creer un dossier dans le répertoire hébergeant SPIP
nommé SITES (ou le nom que vous voulez, à condition de le changer partout dans le turoriel) (au même niveau que CACHE, IMG,...)

Dans ce dossier, créer un sous dossier pour chacun des sites (mon_site, mon_autre_site), et dans chacun :

des sous dossiers :
-  CACHE,
-  IMG,
-  data,
-  upload,
-  squelettes (éventuellement)

des fichiers (éventuellement) :
-  .htaccess (obligatoire ou non ?)
-  mes_fonctions.php
-  mes_options.php

22- Création et modification du .htaccess2

Le .htaccess doit être modifié pour rediriger les adresses des sites SPIP correctement.

(Ce n’est pas la méthode décrite par le ticket 186 qui modifie le fichier de configuration du serveur Apache en créant des Alias, ce qu’on ne peut pas faire dans un .htaccess)

(Il faut donc, dans notre cas, que le serveur autorise le mod_rewrite d’Apache)

Le but est que les adresses de type :
-  http://mon_serveur.org/mon_site ou http://mon_serveur.org/mes_spips/mon_site

soient redirigées vers :
-  http://mon_serveur.org/ ou http://mon_serveur.org/mes_spips/

pour être traitées par :
-  http://mon_serveur.org/spip.php ou http://mon_serveur.org/mes_spips/spip.php

Créer le fichier .htaccess, en copiant le fichier htaccess.txt .
Puis selon le cas...

3Cas (1) : racine du serveur3

Le .htaccess est à ce niveau :
-  http://mon_serveur.org/.htaccess

À l’intérieur, mettre :

  • Dans Configuration :
    • RewriteBase /
  • Dans Réglages personnalisés :
    • RewriteRule ^mon_site/(.*) /$1 [QSA,L]
    • RewriteRule ^mon_autre_site/(.*) /$1 [QSA,L]

3Cas (2) : répertoire du serveur3

Le .htaccess est à ce niveau :
-  http://mon_serveur.org/mes_spips/.htaccess

A l’intérieur, mettre :

  • Dans Configuration :
    • RewriteBase /mes_spips/
  • Dans Réglages personnalisés :
    • RewriteRule ^mon_site/(.*) /mes_spips/$1 [QSA,L]
    • RewriteRule ^mon_autre_site/(.*) /mes_spips/$1 [QSA,L]

23- Création et modification de ecrire/mes_options.php2

Il faut maintenant dire à SPIP que les adresses comportant des dossiers dans l’url (/mon_site) doivent être utilisés comme des SPIP autonomes, si leur dossier existe.

3Pour information3

Toute modification de ce fichier affectera les options de tous les sites hébergés.

Par exemple, mettre dans ce fichier :
-  $type_urls = ’propres’ ;

Donnera par défaut à tous les sites ce type d’url... Mais chaque site peut le changer dans son propre /mon_site/mes_option.php

3Cas (1) : racine du serveur3

Créer/éditer le fichier ecrire/mes_options.php :
Le mes_options.php est à ce niveau :
-  http://mon_serveur.org/ecrire/mes_options.php

Ajouter entre <?php et ?> ces lignes :

 if ( preg_match(',/([a-zA-Z0-9_-]*)[/?],',$_SERVER['REQUEST_URI'],$r)) {
       if (is_dir($f = _DIR_RACINE . 'SITES/' . $r[1]. '/')) {
               $cookie_prefix = $table_prefix = $r[1];
                      
               define('_SPIP_PATH', 'SITES/' . $table_prefix  . '/:./:dist/:formulaires/:ecrire/');
               define('_DIR_IMG', $f.'IMG/');
               define('_DIR_DOC', _DIR_IMG);
               define('_DIR_CACHE', $f.'CACHE/');
               define('_DIR_SESSIONS', $f.'data/');
               define('_DIR_TRANSFERT', $f.'upload');
               define('_FILE_CONNECT_INS', $f.'inc_connect');
               
                $GLOBALS['dossier_squelettes'] = $f.'squelettes';
               
               if (is_readable($f .= 'mes_options.php')) include($f);
       }
 }

Un rapide détail s’impose

Par défaut, la ligne
-  $cookie_prefix = $table_prefix = $r[1] ;

Va créer des tables mysql avec des préfixes ayant le nom du répertoire contenant le site : mon_site_article à la place de spip_article par exemple. Cela permet d’héberger tous les sites sur une seule et même base de données. Vous pouvez garder le préfixe par défaut (spip), mais il faut penser à avoir plusieurs bases de données différentes pour chaque site. _ Pour cela, mettre à la place :
-  $cookie_prefix = $r[1] ;

La ligne ci dessous définit l’adresse du dossier de squelette (mon_site/squelettes) :
-  $GLOBALS[’dossier_squelettes’] = $f.’squelettes’ ;

Pour que tous les sites aient le même squelette situé dans http://mon_serveur/squelettes/ vous pouvez enlever le $f. pour n’avoir que :
-  $GLOBALS[’dossier_squelettes’] = ’squelettes’ ;

3Cas (2) : répertoire du serveur3

On ajoute ces lignes entre <?php et ?> du fichier http://mon_serveur/mes_sites/ecrire/mes_options.php :

 if ( preg_match(',/mes_sites/([a-zA-Z0-9_-]*)[/?],',$_SERVER['REQUEST_URI'],$r)) {
       if (is_dir($f = _DIR_RACINE . 'SITES/' . $r[1]. '/')) {
               $cookie_prefix = $table_prefix = $r[1];
                      
               define('_SPIP_PATH', 'SITES/' . $table_prefix  . '/:./:dist/:formulaires/:ecrire/');
               define('_DIR_IMG', $f.'IMG/');
               define('_DIR_DOC', _DIR_IMG);
               define('_DIR_CACHE', $f.'CACHE/');
               define('_DIR_SESSIONS', $f.'data/');
               define('_DIR_TRANSFERT', $f.'upload');
               define('_FILE_CONNECT_INS', $f.'inc_connect');
               
                $GLOBALS['dossier_squelettes'] = $f.'squelettes';
               
               if (is_readable($f .= 'mes_options.php')) include($f);
       }
 }

En fait, toute la nuance est dans le preg_match...

24- Création et modification de mon_site/.htaccess2

(je ne suis pas sûr que ce soit indispensable)

Mettre dans Configuration :

  • Cas (1)
    • RewriteBase /mon_site/
  • Cas (2)
    • RewriteBase /mes_spips/mon_site/

Conclusion

Si vous êtes chanceux, peut être que ça fonctionne !

Pour lancer la procédure d’installation de vos sites, allez dans le répertoire écrire :
-  http://mon_serveur/mon_site/ecrire/
-  http://mon_serveur/mes_spips/mon_site/ecrire/

Il faut bien configurer l’adresse de vos sites dans l’interface privée :
http://mon_serveur.org/mon_site/ ou http://mon_serveur.org/mes_spips/mon_site/

Il se peux que vous croisiez certains problèmes par la suite, comme trouver la bonne url pour faire fonctionner un javascript... J’ai du pour la configuration d’un menu dépliant (pour l’image des + et - qui se configure dans le javascript) mettre : SITES/nom_site/squelettes/img/mon_image.gif à la place de img/mon_image.gif . SInon, rien de bien méchant.

Alors si tout fonctionne, quand Spip passera en version 2.0 (je sais que vous en rêvez déjà !), vous n’aurez qu’un seul noyau à mettre à jour !

Dernière modification de cette page le 3 juin 2007

Retour en haut de la page

Tout afficher

Vos commentaires

  • Le 24 novembre 2006 à 10:40, par Monique En réponse à : Un noyau SPIP 1.9, plusieurs sites !

    Bonjour,

    J’ai tout installé, ça marche parfaitement au début : installation du nouveau site, les tables se créent bien avec le préfixe, il y a bien un auteur dans la table « auteurs ».

    Mais quand je veux entrer dans le site privé, je tourne en rond.
    Il comprend bien le login et le mot de passe (si j’en mets de mauvais, j’ai bien « identifiant inconnu » ou « erreur de mot de passe »), mais si j’entre le login et le mot de passe, je me retrouve à nouveau sur la page « accès à l’espace privé » remise à zéro, où on me demande mon identifiant.

    J’ai dû faire une erreur quelque part, mais où ?

    Merci de m’éclairer !

    Monique

    Répondre à ce message

  • Le 22 janvier 2008 à 11:52, par pato En réponse à : Un noyau SPIP 1.9, plusieurs sites !

    j’ai suivis votre article a la lettre c’est bon jusqu’a l’etape de l’installation des sites j’ai placer 3 sites un pricipale et deux dans le dossier « mes_spips » le probleme que j’ai c’est qu’il reste toujours dans l’installation et quand je veux voir le site il m’affiche ce message

    Ce site n’est pas encore configuré. Revenez plus tard...

    je ne sais pas ou j’ai pu me tromper est ce que quelqu’un peut m’aider

    • Le 30 janvier 2008 à 20:58, par Fazelle En réponse à : Un noyau SPIP 1.9, plusieurs sites !

      Bonjour,

      J’ai le même problème, lorsque je procède à l’installation tout est OK, jusqu’au dernier écran « n’oubliez pas vos codes » etc... je clique sur suivant, je devrais obtenir l’interface de login, mais je retombe sur l’installation étape 1

      j’utilise la version 1.9.2a de spip

      Quelle est la version que vs utilisez ?

    Répondre à ce message

  • Le 22 janvier 2008 à 11:38, par pato En réponse à : Un noyau SPIP 1.9, plusieurs sites !

    j’ai suivis votre article a la lettre c’est bon jusqu’a l’etape de l’installation des sites j’ai placer 3 sites un pricipale et deux dans le dossier « mes_spips » le probleme que j’ai c’est qu’il reste toujours dans l’installation et quand je veux voir le site il m’affiche ce message

    Ce site n’est pas encore configuré. Revenez plus tard...

    je ne sais pas ou j’ai pu me tromper est ce que quelqu’un peut m’aider

    Répondre à ce message

  • Le 23 janvier 2007 à 13:34, par danou9 En réponse à : Un noyau SPIP 1.9, plusieurs sites !

    Pour ne pas avoir de mélange avec les logos des articles et des rubriques avec les différents sites : merci de rajouter dans le fichier mes_options.php, la ligne :

    define (’_DIR_LOGOS’,_DIR_IMG) ;

    Y at’il une doc sur les variables et constantes (bien utiles) utilisées par SPIP

    Merci

    • Le 24 janvier 2007 à 10:40, par danou9 En réponse à : Un noyau SPIP 1.9, plusieurs sites !

      voici une partie de mon mes_options.php

      J’ai rajouté la definition de _DIR_LOGOS

      Ai-je oublié de définir une constante utile par SPIP ?

      Existe t’il une doc pour connaitre la liste des constantes utiles par SPIP ?

      $cookie_prefix = $table_prefix = $r[1] ;

      define(’_SPIP_PATH’, ’SITES/’ . $table_prefix . ’/ :./:dist/:formulaires/:ecrire/’) ;

      define(’_DIR_IMG’, $f.’IMG/’) ;

      define(’_DIR_DOC’, $f.’DOC/’) ;

      define(’_DIR_LOGOS’, $f.’LOGOS/’) ;

      define(’_DIR_CACHE’, $f.’CACHE/’) ;

      define(’_DIR_SESSIONS’, $f.’data/’) ;

      define(’_DIR_TRANSFERT’, $f.’upload’) ;

      define(’_FILE_CONNECT_INS’, $f.’inc_connect’) ;

      $GLOBALS[’dossier_squelettes’] = $f.’squelettes’ ;

    Répondre à ce message

  • Le 27 novembre 2006 à 16:31, par danou9 En réponse à : Un noyau SPIP 1.9, plusieurs sites !

    J’ai installé spip multisites depuis plusieurs semaines grâce à votre documentation.

    Mais, depuis, cette version 1.9 et 1.9.1, j’ai remarqué que le cache marchait, mal ; est-ce du au fait que je suis en multisites ?
    J’ai beau vider et revider le cache, actualiser la page et faire ctrl F5 sous Mie6, de vieilles données réapparaissent ?
    Vraiment bizzare.

    Le plus bizzarre et drôle en multisites, spip se mélange les pédales, la balise #URL_SITE_SPIP et #NOM_SITE_SPIP garde la valeur du site sur lequel on était avant, et les liens se mélangent. D’un lien « Accueil » j’ai naviguer sur 3 sites spip sur un même serveur.

    C’est très génant.

    Pour finir voilà un test complet pour mieux comprendre mon problème :

    Sous IE6 ou Mozilla, en administrateur pour tout le test

    Je modifie le titre d’un article, puis je clique sur la grosse flèche « Visiter » : la modif n’apparait pas.

    Par contre sur le lien « voir en ligne » la modif apparaît (momentanement ...)

    Je vide le cache et lien sur la flèche « visiter », la modif n’apparaît pas.

    Je recalcule la page « recalculer cette page », la modif réapparait.

    Par contre je clique sur mon fil d’ariane qui donne le lien sur la même page, et la modif disparaît.

    Je fais reclaculer cette page, et elle apparait, puis disparaît ...

    Pour garder, la modif dans ma page, en fait, je dois faire F5 et la modif réapparaît (alors que cette touche sous Spip ne va pas chercher sur le serveur).

    Un autre lien sur cette même page, dans le menu de gauche, et ca redisparait. F5, remedie au problème.

    Autant de liens sur cette même page d’accueil, et il faut F5 pour raffraichir.

    Et le cache de Spip dans tout ca, que j’ai vider, et le recalcul de la page, ne sont que momentané ...

    Avez-vous déjà rencontré ce problèmes (si problème il y a).

    Le multi-site est récent et des gens qui créént beaucoup de sites sous Spip et en multisites, il ne doit pas y en avoir beaucoup.

    Merci

    • Le 14 janvier 2007 à 19:01, par Matthieu Marcillaud En réponse à : problèmes de cache ?

      Bonjour,

      Non, je n’ai pas eu ce genre de situation avec les caches (mais je suis la svn).
      J’ai installé une 1.9.1 et mes tests ont fonctionné, sauf que #NOM_SITE_SPIP ne fonctionnait pas au début, avant que j’ailles dans configuration et valide un nouveau nom, c’est vrai que c’était étrange cela.

      MM.

    • Le 14 janvier 2007 à 20:21, par Matthieu Marcillaud En réponse à : Un noyau SPIP 1.9, plusieurs sites !

      Sous SPIP, le bouton « visiter » ne provoque pas de recalcul, contrairement à « voir en ligne » qui force un recalcul de la page.

      Vider le cache de SPIP permet de tout faire recalculer, mais il faut penser aussi à vider le cache du navigateur. C’est ce que fait la touche f5 pour la page en cours sur le navigateur.

      Malgré cela, il peut y a peut être encore quelques coquilles, c’est possible.
      Essayez peut-être le code pour SPIP 1.9.1 que je viens de poster , il fonctionne correctement chez moi.

      MM

    • Le 14 janvier 2007 à 21:29, par Matthieu Marcillaud En réponse à : Cafouillages sur les mutualisations 1.9.1

      Le plus bizzarre et drôle en multisites, spip se mélange les pédales, la balise #URL_SITE_SPIP et #NOM_SITE_SPIP garde la valeur du site sur lequel on était avant, et les liens se mélangent. D’un lien « Accueil » j’ai naviguer sur 3 sites spip sur un même serveur.

      Bon, en fait, je confirme aussi ces choses, sans toutefois les comprendre, sous 1.9.1 [7502].

      Je vais tester sur une svn (version de développement, actuellement 1.9.2b3 pour voir si ça fait pareil, mais je pense que non car je l’aurais déjà remarqué (j’ai 4 sites sur 1 SPIP en local et ils fonctionnent tous correctement)

      Ce bug a certainement du être corrigé donc...

      MM

    Répondre à ce message

  • Le 14 janvier 2007 à 19:46, par Matthieu Marcillaud En réponse à : Récapitulatif : mutualisation de répertoires pour SPIP 1.9.1

    Bonjour,

    Petite synthèse des choses à faire pour SPIP 1.9.1 pour mutualiser des répertoires :

    1. Créer les dossiers

    Créer un dossier qui contiendra les répertoires des sites à mutualiser (ici : sites) à la racine de SPIP :
    /sites

    Dans chaque répertoire de site, créer les répertoires CACHE, data, IMG, upload et éventuellement squelettes :

    /sites/site_1/CACHE
    /sites/site_1/data
    /sites/site_1/IMG
    /sites/site_1/upload
    /sites/site_1/squelettes (eventuellement)

    2. Créer le fichier .htaccess

    A la racine du site, copier le fichier htaccess.txt en .htaccess et modifier la ligne RewriteBase pour qu’elle corresponde à votre configuration :

    Si SPIP est installé à la racine du serveur (http://example.net/) :
    RewriteBase /

    Si SPIP est dans un répertoire du serveur (http://example.net/spip/) :
    RewriteBase /spip/

    Créer les redirections de vos répertoires vers le répertoire contenant SPIP ; dans la partie « réglages personnalisés », ajoutez les lignes suivantes, en les adaptant à votre configuration :

    # remplacez /spip/ par la même valeur que votre RewriteBase
    RewriteRule ^(site_1|site_2|site_3)$ /spip/$1/ [R,L]
    RewriteRule ^(site_1|site_2|site_3)/(.*)  /spip/$2 [QSA,L]

    3. Créer le fichier mes_options.php

    Créez ou modifiez le fichier ecrire/mes_options.php en incluant ces lignes :

    <?php
    # remplacez /spip/ par la même valeur que votre RewriteBase
    if ( preg_match(',/spip/([a-zA-Z0-9_-]+)/?,',$_SERVER['REQUEST_URI'],$r)) {

            if (is_dir($e = _DIR_RACINE . 'sites/' . $r[1]. '/')) {

                    $cookie_prefix = $table_prefix = $r[1];

                    define('_SPIP_PATH',
                            $e . ':' .
                            _DIR_RACINE .':' .
                            _DIR_RACINE .'dist/:' .
                            _DIR_RESTREINT);

                    spip_initialisation_parametree($e, $e);

                    $GLOBALS['dossier_squelettes'] = $e.'squelettes';

                    if (is_readable($f = $e.'mes_options.php')) include($f);
            }
    }
    ?>

    Répondre à ce message

  • Le 11 janvier 2007 à 19:07, par sp En réponse à : Un noyau SPIP 1.9, plusieurs sites !

    Installation multisites fonctionne bien (plugins...) sauf que le nom du premier site ouvert reste lorsque l’ on change de sites ceux-ci affichent ,dans le bandeau, le titre du premier : les articles sont ceux du bon site mais pas le titre
    l’accès à l’espace privé se fait aussi de façon aleatoire
    Problème de cache ?
    Merci de repondre vite si vous avez une idée il y’a peu d’aide sur les multisites spip

    • Le 14 janvier 2007 à 19:11, par Matthieu Marcillaud En réponse à : Accès aléatoires...

      Bonjour,

      Je viens d’installer une 1.9.1 pour faire des tests, et je n’ai pas eu d’erreur d’accès aux espaces privés. Je l’ai cru à un moment car en restaurant un dump d’un autre site, spip m’avait effacé logiquement le nom d’utilisateur avec lequel je me connectais, mais rien de mal en fait.

      Le soucis que j’ai eu à l’installation, c’est #NOM_SITE_SPIP qui ne s’active, j’ai l’impression, qu’une fois que l’on valide un nouveau nom de site dans la configuration de l’espace privé.

      MM.

    Répondre à ce message

  • Le 23 décembre 2006 à 21:55, par Jean-Paul Bleau En réponse à : Un noyau SPIP 1.9, plusieurs sites !

    Merci pour ce tutoriel.

    Ma question est la suivante :

    Site1 = /SPIP/Site1 Domaine = www.domaine1.com
    Site2 = /SPIP/Site2 Domaine = www.domaine2.com
    etc...

    Domaine 2 est redirigé par le gestionnaire des noms vers www.domaine1.com

    Y-a-t-il un moyen de faire afficher www.domaine2.com dans la ligne d’adresse au lieu de la redirection qui affiche un autre nom de domaine ?
    Merci

    Répondre à ce message

  • Le 18 octobre 2006 à 12:29, par veronicay En réponse à : Un noyau SPIP 1.9, plusieurs sites !

    Bonjour

    Merci de cette contrib, qui pourrait me servir. Mais avant de me lancer dans ces complexités, est-ce que quelqu’un peut me dire si ça pourrait servir pour publier le même article sur plusieurs sites ? C’est à dire une seule base de données avec des articles qui peuvent apparaître sur un ou plusieurs sites SPIP (noms de domaine différents), avec mises en pages différentes. J’avais pensé à faire une rubrique pour chaque site, mais chaque article ne peut appartenir qu’à une seule rubrique. Donc je repars sur l’idée d’utiliser des groupes de mots-clés (un groupe pour chaque site), mais ce serait plutôt lourd à gérer et rend difficile une hiérarchie de plusieurs niveaux pour chaque site. Est-ce que cette contrib pourrait servir ??

    • Le 24 octobre 2006 à 21:45, par Matthieu Marcillaud En réponse à : Un noyau SPIP 1.9, plusieurs sites !

      Ca ne changera pas le problème. Les mots-clés semblent le bon recours !

      Par contre, si tu as plusieurs sites, ils peuvent effectivement utiliser la même base de donnée avec des noms de domaine différents et des squelettes différents sans problème, le tout sur un seul spip avec un plugin qui permet de changer le squelette en fonction du nom de domaine justement (vhosts)

      MM.

    Répondre à ce message

  • Le 1er septembre 2006 à 15:59, par danou9 En réponse à : Un noyau SPIP 1.9, plusieurs sites !

    Merci pour ce tutoriel ;
    j’ai plusieurs sites, mais je rencontre 2 petits problèmes.

    1) Mes images dans mes différents sites ne marchent plus.
    J’ai mis les images dans un répertoire distinct pour chaque site : exemples ../spip19/SITES/portailrh/images/
    les images n’apparaissent pas, car spip crée toujours une adresse du type .../spip19/portailtest/images/accueil.gif alors que mes liens dans mes squelettes sont de la forme images/accueil.jpg
    j’ai essayé plusieurs chemin mais ça ne fonctionne pas.
    En chemin absolu, ça marche, mais je n’en veux pas, car je bascule le site d’un environnement de test en prod, et les chemins et nom de sites ne sont pas forcement les mêmes.

    2) même problème pour faire en php dans un squelette, un inlude d’un fichier initialisation.ini ou il y à des variables différentes pour chaque sites. (utile pour la sécurité sous Access Master)
    Quand on tape une url comme http://zeus/drh/spip19/portailtest ou un lien comme http://zeus/drh/spip19/portailtest/rubrique.php?id_rubrique=1 les variables d’environnement SCRIPT_FILENAME donnent .../spip.php, on ne peut pas récupérer le nom du répertoire du site ;
    de plus dans un squelette, #NOM_SITE et #URL_SITE sont à blanc
    J’ai mis en dur en premiere ligne dans mes squelettes une variable avec le nom du site ... et ça marche, mais j’aimerais un moyen plus propre pour récupérer le nom du site et l’url
    pour éviter si le nom et chemin du site sont modifiés ne pas avoir à retoucher à la première ligne des squelettes.

    Merci

    • Le 1er septembre 2006 à 19:07, par Matthieu Marcillaud En réponse à : Un noyau SPIP 1.9, plusieurs sites !

      -  Pour 1)

      J’ai testé dans inc-entete.html :
      <img src='#CHEMIN{images/toto.jpg}' />

      Mon image est dans /SITES/mon_site/images/toto.jpg.
      L’image s’affiche correctement chez moi ;
      SPIP écrit l’adresse de l’image comme cela :
      <img src='//static-contrib.spip.net/SITES/mon_site/images/toto.jpg' />

      Remarque : ça marche aussi si on met l’image dans /SITES/mon_site/squelettes/images/toto.jpg.

      Est-ce que ça aide où l’image ne s’affiche toujours pas ?

      -  Pour 2)

      Déjà, ajouter _SPIP peut aider : #NOM_SITE_SPIP et #URL_SITE_SPIP.

      Je pensais que
      dirname(__FILE__)
      en php donnerait l’adresse du répertoire squelette, mais il donne l’adresse du répertoire de public.php, soit écrire...

      Donc, une autre solution simple pour récupérer le répertoire du squelette est soit d’utiliser #URL_SITE_SPIP qui ne fait qu’afficher
      $GLOBALS['meta']['adresse_site']
      (voir dans ecrire/public/balises.php), soit de définir une variable globale dans mes_options.php contenant l’adresse du répertoire du site... par exemple un
      $GLOBALS['adresse_site_mutualise'] = $e;
      ou quelque chose d’approchant.

      Salutations,
      MM. 

    • Le 4 septembre 2006 à 17:51, par danou9 En réponse à : Un noyau SPIP 1.9, plusieurs sites !

      Merci pour votre réponse rapide et bien utile.

      Je ne connaissais pas #CHEMIN... ; ne l’ayant pas trouvée dans une doc 1.9 récente.
      Par contre un petit problème encore, ou un bug spip ?
      Dans mon squelette article.html, j’ai un INCLURE (menu/menutop.htm)
      et #CHEMIN semble ne pas fonctionner du tout dans un INCLURE
      j’ai été obligé de créer dans mon squelette une variable $chemin = #CHEMIN crochet images crochet et dans mon fichier des menus, déclarer les images simplement par le nom des images ...
      Avez-vous une solution à proposer ?

      Autre problème avec les CSS
      Dans un squelette comme article, la sous-classe ci dessous ne marche plus :
      .accueil (crochet)
      background-attachment : fixed ;
      background-image : url(#CHEMIN (crochet) images/grad_hd_top.gif)(crochet) ;
      suite ...
      (crochet)

      car il y a 1 caractère crochets fermant de trop, les déclarations àprès suite ne sont pas valides
      si mes classes sont dans un fichier .css, comment donner le chemin pour une image ?

      merci d’avance

    • Le 5 septembre 2006 à 09:25, par Matthieu Marcillaud En réponse à : Un noyau SPIP 1.9, plusieurs sites !

      De mémoire, include n’aime pas trop les répertoires...
      Essayer (en mettant menutop.html à la racine du dossier squelette, pas dans /menu).
      Par ailleurs, je crois qu’il faut fond= :

      <INCLURE{fond=inc-entete}{id_secteur}>


      Ou, nouvelle syntaxe possible (pas de cache du fichier cible, directement intégré dans le cache du fichier en cours (en 1.9.1) :

      #INCLURE{fond=inc-entete}

      SInon, pour stocker une variable sans passer par php depuis Spip 1.9.1, utiliser #SET et #GET :

      #SET{chemin,#CHEMIN{machin} }
      #SET{toto,texte de toto}
      #GET{chemin}

      Si le css inclus ne fonctionne pas, tester avec le codage plus lourd utilisant [ et ( :

      .accueil{
      background-attachment : fixed ;
      background-image : url( [(#CHEMIN{images/grad_hd_top.gif})] );
      }


      Y a pas de raison que ça ne marche pas !

      Dernière possibilité : mettre tout ça dans le fichier css en le renomant style.css.html pour en faire un squelette de page et l’appeler dans inc-head par :

              <!-- Feuille de styles CSS  -->
              <?php
                      echo "<link rel='stylesheet' href='"
                      .generer_url_public('style.css')."' type='text/css' media='all' />\n";
              ?>        

      Le fichier styles.css.html en question commence par envoyer des entetes http particulières (a mettre avant le code css) :

        #CACHE{3600*24*7*2}
        #HTTP_HEADER{Content-Type: text/css; charset=utf-8}
        #HTTP_HEADER{Vary: Accept-Encoding}


      (attention, pour les tests, il faut recalculer la page styles.css aussi ou mettre dedans #CACHE{0} pour forcer un recalcul systématique sinon on a beau modifier le css, on n’afficherait que la cache de spip)

      Bon Spip,
      MM

      PS : pour mettre du code dans ce forum, rien de tel qu’encacrer le code par une balise html ’code’ justement.

    • Le 5 septembre 2006 à 15:32, par danou9 En réponse à : Un noyau SPIP 1.9, plusieurs sites !

      Merci, ça marche

      En ce qui concerne les CSS, le plus simple est de mettre un chemin en relatif comme par exemple : url (../images/nom.gif) ;
      Car le rep images est au même niveau que CSS
      La balise #CHEMIN n’est pas nécessaire dans les fichiers CSS

      Votre solution avec le codage plus lourd utilisant [ et ( n’a rien donné

      Votre solution de fichier CSS sous forme de squelette doit fonctionner, mais je ne l’ai pas essayée
      Je l’ai aussi trouvée dans ../dist/style-prive.html

      En ce qui concerne la balise INCLURE, après beaucoup de temps, je me suis aperçu que le nom de fichier à inclure, doit avoir l’extension html et non htm !!!
      Du coup, la balise #CHEMIN, dans mon squelette inclus, fonctionne bien.
      Tout est ok.

      Merci

    • Le 11 octobre 2006 à 14:36, par rgodefroy En réponse à : Un noyau SPIP 1.9, plusieurs sites !

      Bonjour,

      J’ai aussi un problème avec les balise suivantes :

      #NOM_SITE_SPIP => vide

      #LOGIN_PRIVE => erreur 404

      Le reste fonctionne bien, mais je suis bloqué !
      une idée ??
      Est-ce que ces balises fonctionnent pour vous ?

      Merci

    • Le 11 octobre 2006 à 16:03, par rgodefroy En réponse à : Un noyau SPIP 1.9, plusieurs sites !

      Vérification faite, la balise #NOM_SITE_SPIP fonctionne bien si le meta est renseigné (toutes mes confuses)

      Par contre j’ai toujours une erreur 404 en retour de #LOGIN_PRIVE

      Ca merde dans la fonction login_pour_tous (balise/login_public.php, //Appeler le squelette formulaire_login)

    Répondre à ce message

Répondre à cet article

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 Les choses à faire avant de poser une question (Prolégomènes aux rapports de bugs. )
Ajouter un document

Retour en haut de la page

Ça discute par ici

  • Mailsubscribers

    16 janvier 2013 – 274 commentaires

    Ce plugin permet de gérer les inscriptions (ou abonnements) à la diffusion de contenu par email. Mailsubscribers permet de gérer les inscriptions par Opt-in simple ou double et la désinscription par URL. Ce plugin gère également plusieurs listes (...)

  • noiZetier v2

    9 novembre 2012 – 36 commentaires

    Le noiZetier offre une interface d’administration permettant d’insérer au choix des éléments modulaires de squelettes (noisettes) et de les ajouter ainsi à ses squelettes. Compatibilité La version 2 du noizetier fonctionne sous SPIP 3. Elle est (...)

  • cirr : plugin « rédacteur restreint »

    29 octobre 2010 – 60 commentaires

    Ce plugin « cirr : rédacteur restreint » permet d’affecter des rubriques aux rédacteurs et modifie les droits afin qu’un rédacteur restreint (ou un administrateur restreint) voit dans l’espace privé uniquement les rubriques qui lui sont affectées (et leur (...)

  • Un retour d’expérience d’utilisation de Formidable

    26 octobre – commentaires

    Il s’agissait de créer un formulaire d’inscription à un évènement modérer les inscriptions dans le privé publier les inscriptions dans le public Nous avons discuté de cette présentation lors de l’apéro SPIP du 15 février 2016 à la Cantine (...)

  • Métas +

    3 décembre – 14 commentaires

    Améliorez l’indexation de vos articles dans les moteurs et leur affichage sur les réseaux sociaux grâce aux métadonnées Dublin Core, Open Graph et Twitter Card. Installation Activer le plugin dans le menu dédié. Dans le panel de configuration, (...)

Ça spipe par là