[spip-dev] problèmes avec dossier squelettes

dlatr a écrit:

euh, non !

chez moi, les .php3 rajoutés ne fonctionnent que s'ils sont à la
racine, leur correspondant .html est lui dans le dossier squelettes

les php3 rajoutés peuvent être dans n'importe quel répertoire
pour autant que ce répéertoire soit aujouté dans le chemin de php
qui, dans spip, est appelé _SPIP_PATH (pourquoi pas SPIP_PHP_PATH
ou quelques nom qui précise qu'il s'agit de php?).
Cela se fait en ajoutant un fichier ecrire/mes_options.php3
qui contient (adapter repertoire_php):
<?php
  define ('_SPIP_PATH', 'repertoire_php/:./:squelettes/:dist/:formulaires/');
?>

> et la feuille de style
> dans un répertoire squelettes

les miens sont à la racine et reconnus sans modification (ce serait
plus logique dans /squeletttes je suppose)

C'est vrai que c'est un peu étrange que les css ne soient pas
relatifs au répertoire où se trouvent les html appelants.
Il faut se mettre dans la tête que tout se passe comme si les squelettes
étaient à la racine pour les css (et pour les INCLURE, je crois).
Il faudra documenter cela proprement.

> squelette et la feuille de style sont dans le même répertoire. Dans
> Dreamweaver par exemple, le lien vers la feuille de style est faux.

C'est vrai que pour les css, cela fait un peu bizarre, mais
personnellement, cela me va bien de réfléchir ainsi.
Mais il se peut que cela pose des problèmes à d'autres outils.

> Pour le répertoire images, si on le laisse à la racine, les images sont
> trouvées dans les squelettes, à l'éxception des images liées par la
> feuille de style, alors que les chemins « html » sont faux.

Tu peux repréciser? Par chemin « html » tu veux dire des appels
tels que <img src=...>?
Pour moi, les accès aux images se passe bien comme si tout se déroulait
depuis la racine (dans les fichiers squelettes).
Mais les images référencées dans les css sont relatives aux css,
ce qui effectivement complique, mais je crois que c'est inhérent aux css.
N'existe-t-il pas de possibilité de définir un path css?

Il faudra documenter avec un dessin, etc.

> Il est donc très
> difficile alors de travailler avec un éditeur de type Dreamweaver car
> on
> a alors plus d'images et plus de lien vers la feuille de style.

Je comprends. Mais pour l'utilisation de dreamwaver, n'est-il
pas plus simple d'ajouter un lien vers le répertoire image dans
le dossier squelette? Idem pour les feuilles de style?

> Nous ne savons pas si c'est un problème lié à SPIP ou si c'est nous qui
> avons mal compris l'utilisation du dossier squelettes.

Je résume ce que j'ai compris. Soit 4 répertoires à la racines:
- nos_squelettes
- nos_php
- nos_css
- nos_images

Le répertoire nos_squelettes est défini dans mes_fonctions.php3
  ( $GLOBALS['dossier_squelettes'] )
Le répertoire nos_php est défini dans ecrire/mes_options.php3
  ('_SPIP_PATH')

Les fichiers html (les squelettes) référencent les fichiers css, images
et php (INCLURE) depuis la racine et fonction de _SPIP_PATH.
Les fichiers css référencent les images (url=...) depuis le répertoire
du fichier css (relatif à nos_css)
Pour les fichiers php, je n'ai pas d'exemple.

Si ce résumé est faux, me corriger pour ne pas induire en horreur.

          Anne

> et la feuille de style
> dans un répertoire squelettes

les miens sont à la racine et reconnus sans modification (ce serait
plus logique dans /squeletttes je suppose)

C'est vrai que c'est un peu étrange que les css ne soient pas
relatifs au répertoire où se trouvent les html appelants.
Il faut se mettre dans la tête que tout se passe comme si les squelettes
étaient à la racine pour les css (et pour les INCLURE, je crois).
Il faudra documenter cela proprement.

Pour le css, il faut bien comprendre qu'il n'est pas inclus, le navigateur
recoit le html et va chercher le css.
Il ira donc le chercher selon le chemin indiqué dans le HTML.
Pour tout ce qui est généré, il faut simplement avoir en tete que le chemin
est relatif au fichier d'appel, quel que soit les micmac d'inclusion qu'on
fait derriere.

Fil avait monté une astuce très efficace en remplacant "./" par le chemin
(generalement /squelette) pour les fichiers css, ce qui permettait de les
mettre avec les .html et de les utiliser dans l'affichage du squelette, mais
ca a été supprimé de la 1.8, c'est vrai qu'il faut bien mesurer le
consequences de ce genre de manip, mais c'est vrai aussi que c'etait bien
pratique !

Mais il faut remettre le choses à leurs places : on peut toujours laisser
les .html à la racine ainsi que les css, comme avant.
Le fait de pouvoir mettre les .html (et les .php3 qu'on ne veut pas
"exposer") dans un sous repertoire est deja une belle amélioration.

Ceci dit si il n'y avait pas de danger réel identifier, tu peux peut etre
nous redonner les 3 lignes de codes qui faisaient ca, Fil, non ?
Ca vaut peut etre une mini contrib ?

Dans mon souvenir c'etait au debut de propre() avant la beta6.

@++

Merci pour ce résumé.

Cela dit, quelque chose m'échappe. Si je désire installer un squelette contenant des html/php/css spécifiques, devrais-je ventiler ces types de fichiers dans autant de répertoires que de types ? Et surtout pourquoi ?

Marc Lebas a écrit :

Je résume ce que j'ai compris. Soit 4 répertoires à la racines:
- nos_squelettes
- nos_php
- nos_css
- nos_images

Le répertoire nos_squelettes est défini dans mes_fonctions.php3
( $GLOBALS['dossier_squelettes'] )
Le répertoire nos_php est défini dans ecrire/mes_options.php3
('_SPIP_PATH')

Les fichiers html (les squelettes) référencent les fichiers css, images
et php (INCLURE) depuis la racine et fonction de _SPIP_PATH.
Les fichiers css référencent les images (url=...) depuis le répertoire
du fichier css (relatif à nos_css)
Pour les fichiers php, je n'ai pas d'exemple.

Si ce résumé est faux, me corriger pour ne pas induire en horreur.

Merci pour ce résumé.

Cela dit, quelque chose m'échappe. Si je désire installer un squelette contenant des html/php/css spécifiques, devrais-je ventiler ces types de fichiers dans autant de répertoires que de types ? Et surtout pourquoi ?

Dans notre cas le résumé n'est pas tout à fait juste.
J'ai à la racine un répertoire squelettes comprenant les html, les css, les php3 ajoutés et un sous-répertoire images comprenant les images de ma mise en page.
  Il me semble que l'un des buts de la réorganisation des répertoires est se simplifier la transportabilité des squelettes (avec tous les fichiers que que cela implique : .html, .css, .php3 et images)et de rendre les choses plus claires. Dans cette optique la création d'un dossier squelettes unique ou tout est dedans est une très bonne idée.
cependant, cette réorganisation des répertoires crée un niveau de complexité suplémentaire car du fait des inclusions, des fichiers sont dans un répertoire mais il faut faire comme si ils étaient dans un autre , par exemple si les fichiers html et css sont dans squelettes, le lien vers la feuille de style doit être fait comme si le html était à la racine et le css dans squelettes soit <link rel="stylesheet" href="squelettes/ma_feuille.css" ...>. Pour un débutant (ou même pas un débutant...) comprendre cela n'est pas très évident.
Je pense que beaucoup de gens utilisent des éditeurs de type graphique donc en conception rien ne marche au niveau des styles.
Le problèmes est le même si toutes les images sont dans un sous répertoire du dossier squelette.
J'avoue que je ne sais pas comment faire pour éviter ce problème mais je pense qu'il faut pouvoir faire des squelettes avec du html utilisant des liens justes.
Si le css et les html sont dans le même répertoire, il faut pouvoir mettre l'appel au css normalement : <link rel="stylesheet" href="ma_feuille.css" ...> tout le monde comprendra mieux.
Voilà voilà, pas de solution mais des questions...

Stéphanie Cléach
Laurent Casagrande
CRDP de Bourgogne - Dijon

bon, pour evter de se prendre la tete, il y a quand meme un moyen simple :
- mettre les css avec le .html dans le repertoire /squelette
- sur le site, mettre une rewriterule qui pointe vers le repertoire
squelette

Pour ca, le plus simple etant d'utiliser des noms reperables genre
mes_XXX.css
Comme ca, les css (et ca marche aussi pour les javascripts par exemple) sont
bien dans le meme repertoire et appelés comme si tout se trouvait à la
racine. Les squelettes sont autonomes et les css et js accessibles à la
visualisation du .html
Pour les images, le mieux c'est d'avoir un sous repertoire dans /squelette
et de faire la meme chose

Bon, faut avoir accès aux rewriterules et au .htaccess, ca doit donner un
truc du genre (pas testé ...) :
Options +FollowSymlinks

RewriteEngine on

RewriteRule ^mes\_([a-z]+)\.css$ squelettes\/mes_$1.css [QSA,L]

RewriteRule ^mes\_images\/([a-z]+)\.gif$ squelettes\/mes_images\/$1.gif
[QSA,L]

...

C'est pas le top mais ca depanne bien...

@++