[spip-dev] #DOSSIERSQUELETTE

Soit, un bout de squelette (statistique pour ne pas le citer), propose en contribution : http://www.uzine.net/spip_contrib/article.php3?id_article=56

Il est compose de 3 fichiers ( statistiques.php3, statistiques.html et un repertoire d'images).

Je veux l installer sur un site qui a son squelette dans un sous-repertoire .

Ne serait il pas possible de creer une balise (du genre #DOSSIERSQUELETTE ) pour les prochaines versions. Comme cela dans le fichier html, il y a un truc du genre <img src=#DOSSIERSQUELETTEimg-stats/puce.gif"> , avec #DOSSIERSQUELETTE vide ou la valeur definie dans mes_fonctions.

Comme cela pour l installation de cette contrib, il suffit de mettre
-le .php3 a la racine
- et le html et le dossier image a la racine ou dans le dossier squelette.

Cela permet de s'y retrouver un peu mieux non?
Un probleme de securite quelque part pour cela ?

A+
Ben.

Ca je le savais :wink:
Mais comme on est dans le squelette en html, c'est juste pour continuer la logique de sPIP et eviter le php dans le squelette .

Ben.

Fil wrote:

Ben. a écrit:

Ca je le savais :wink:
Mais comme on est dans le squelette en html, c'est juste pour continuer la logique de sPIP et eviter le php dans le squelette .

oui C juste :smiley:

et au fait, faudra aussi faire la balise #CAFE
avec ses filtres :
[(#CAFE|creme)]
[(#CAFE|sans_sucre)]
[(#CAFE|court)]
[(#CAFE|au_lait)]

:smiley: :smiley: :smiley:
pour répondre à certaines questions

après tout peut être que #CAFE pourrait être une fonction/filtre/autres personnalisable dans le mes_fonctions.php3 :
"function cafe (.... "

Mais comme on est dans le squelette en html, c'est juste pour continuer
la logique de sPIP et eviter le php dans le squelette .

La logique de spip c'est le couple article.php3/article.html dans le même
dossier ; avec ton système on introduit un niveau de complication
supplémentaire, donc un élément supplémentaire d'incompréhension éventuelle.
En gros, "techniquement" ça marcherait, mais "socialement" bof.

-- Fil

Bonjour à tous,

Je rebondis sur le sujet parce que je suis dans un cadre un peu
particulier : j'ai dans site Spip (en développement) plusieurs sites, chacun
étant en fait un secteur, et j'ai des jeux de squelettes vraiment différents
selon chaque secteur.

Alors au départ j'avais bien pensé à l'astuce rubrique-x.html et
rubrique=x.html, mais ça ne me suffit pas dans la mesure où, comme les sites
vont évoluer en parallèle, il me faudrait aussi une combinaison de
article-y.html et/ou de article=y.html qui fonctionne non pas en fonction de
l'id_article mais de l'id_secteur de l'article (je ne sais pas si je me fais
bien comprendre).

Ce qui m'arrangerait vachement, c'est un truc dans le genre :
Si secteur 1, alors $dossier_squelettes = SITE1/
Si secteur2, alors $dossier_squelettes = SITE2/
Sinon, $dossier_squelettes = 'rien'
ce qui me permettrait d'avoir dans chacun de mes dossiers SITEx/ les jeux de
squelettes (article, rubrique, breve, ...), CSS et images associées, et
comme (potentiellement) on est censé travailler à plusieurs, il suffit de se
balancer le bon dossier en intégralité sans se faire de soucis.

Mais là où je coince, c'est pour extraire le critère secteur en fonction de
l'"élément" que j'appelle. En effet, mon test doit être valable pour les
rubriques, les articles, les brèves, les sites, ... bref, tout ce qui est à
l'intérieur d'un secteur (heureusement- je n'ai pas de mots-clés à gérer),
donc je suppose que je vais devoir tester les id_secteur dans les
article.php3, rubrique.php3 depuis respectivement les id_article et
id_rubrique etc etc

Or, en PHP, je ne sais pas comment faire. Je sais faire avec des boucles
SPIP, mais pour ça il faut être dans le squelette (or mon test se situe
avant puisque justement il est censé permettre de choisir le squelette).
Sinon, j'ai bien la solution de <INCLURE (sitex-article.php3) {id_article}>
à placer dans les différentes "branches" de test de boucles SPIP dans un
squelette, mais alors je vais me retrouver avec une quantité de .php3 à la
racine de mon répertoire SPIP, ce qui ira un peu à l'encontre de ma
tentative d'optimisation du rangement.

Donc, si quelqu'un a compris quelque chose à mon pb et a une idée lumineuse
à me suggérer, je suis preneur :wink:

-- Roustoubi

Bonjour,

La logique de spip c'est le couple article.php3/article.html dans le même
dossier ; avec ton système on introduit un niveau de complication
supplémentaire, donc un élément supplémentaire d'incompréhension éventuelle.
En gros, "techniquement" ça marcherait, mais "socialement" bof.

Alors au départ j'avais bien pensé à l'astuce rubrique-x.html et
rubrique=x.html, mais ça ne me suffit pas dans la mesure où, comme les sites
vont évoluer en parallèle, il me faudrait aussi une combinaison de
article-y.html et/ou de article=y.html qui fonctionne non pas en fonction de
l'id_article mais de l'id_secteur de l'article (je ne sais pas si je me fais
bien comprendre).

Ben sur :

  http://www.uzine.net/article877.html

il est écrit :

Une interface différente selon les rubriques. Vous pouvez, pour un même type de document, créer des squelettes différents selon les rubriques du site. Il s'agit de créer simplement de nouveaux fichiers .html en fonction des rubriques (inutile, ici, de modifier le fichier .php3, on se contente de jouer sur les noms des fichiers squelettes.

Il suffit de compléter le nom du fichier squelette de « -numéro » (tiret suivi d'un numéro de rubrique). Par exemple, si vous créez un fichier : article-60.html, tous articles contenus dans la rubrique 60 utiliseront ce squelette (et non plus le squelette par défaut article.html). Notez bien : le numéro indiqué est celui d'une rubrique. Si cette rubrique 60 contient des sous-rubriques, les articles contenus dans ces sous-rubriques utiliseront également ce nouveau squelette.

le numéro, dans article-xx.html, se rapporte bien à un secteur ou à une rubrique, et non à un numéro de rubrique.

Si c'est pas de ça qu'on cause, pas taper et je vais me reposer... :slight_smile:

À bientôt,

Gilles.

numéro, dans article-xx.html, se rapporte bien à un secteur ou à une rubrique, et non à un numéro de rubrique.

Lire : « et non à un numéro d'**article**. »

Repos, donc.

g

numéro, dans article-xx.html, se rapporte bien à un secteur ou à une
rubrique, et non à un numéro de rubrique.

Lire : « et non à un numéro d'**article**. »

Oui, effectivement, ça répond à une partie de mes attentes. Ça fait trop
longtemps que j'ai lu la doc, et j'avais oublié. Et comme je n'ai relu que
http://www.uzine.net/article1591.html, j'avais oublié ce point.

Néanmoins, ça ne me permet pas de regrouper mes squelettes par "sites" dans
un même dossier.

Sur la liste SPIP, Fil a publié récemment l'astuce suivante :

A mon avis une manière sûre de faire ça peut être via un truc du genre :
if (test ici == 1) {
  $GLOBALS['dossier_squelettes'] = 'squel1';
} else if (test ici == 2) {
  $GLOBALS['dossier_squelettes'] = 'squel2';
} else {
  $GLOBALS['dossier_squelettes'] = 'defaut';
}

En gros c'est ce dont j'ai besoin, sauf que chez moi le test doit se faire
en fonction de id_secteur et que je ne sais pas comment remonter à
id_secteur depuis id_article (par exemple) en php "pur" pour que ça
fonctionne dans les fichiers d'appels .php3 du couple php/html.

Bon effectivement, je suis sans-doute un peu chiant là, mais peut-être qu'un
as du php a une formule magique dans son tiroir :wink:

-- Roustoubi

En gros c'est ce dont j'ai besoin, sauf que chez moi le test doit se faire
en fonction de id_secteur et que je ne sais pas comment remonter à
id_secteur depuis id_article (par exemple) en php "pur" pour que ça
fonctionne dans les fichiers d'appels .php3 du couple php/html.

Voilà un bout de code à insérer au début du fichier article.php3 :

<?php
// Rechercher le secteur contenant l'article
$sql = "SELECT id_secteur FROM spip_articles WHERE id_article=$id_article ";
$res = spip_query($sql);
list($id_secteur) = mysql_fetch_row($res);
mysql_free_result($res);

// Choisir le répertoire contenant les squelettes adhoc
switch($id_secteur) {
  case 1 :
    $GLOBALS['dossier_squelettes'] = 'squel1';
    break;
  case 2 :
    $GLOBALS['dossier_squelettes'] = 'squel2';
    break;
  default :
    $GLOBALS['dossier_squelettes'] = 'defaut'; // ou '.' ???
} // Fin switch($id_secteur)

// Suite du fichier distribué
$fond = ......
$delais = ......
........

NB: Pour mon information, comment est exploitée la variable 'dossier_squelettes' par Spip ?
A+
   François