Hello,
est-il actuellement (ou prévu qu'il soit un jour) possible d'imbriquer
les templates, histoire par exemple (pour rester simple) d'avoir un
en-tête et un pied de page commun à tout le site sans avoir à recopier
tout son code dans les différents squelettes ?
J'ai essayé de créer plusieurs squelettes, et de mettre ce qui suit
dans mon 'article.php3' :
<?
$fond = "header";
$delais = 24 * 3600;
include ("inc-public.php3");
$fond = "article";
$delais = 24 * 3600;
include ("inc-public.php3");
$fond = "footer";
$delais = 24 * 3600;
include ("inc-public.php3");
?>
Mais j'ai bien évidemment l'erreur suivante :
Fatal error: Can't redeclare already declared function in ecrire/inc_index.php3 on line 20
Je voudrais donc savoir si quelque chose est déjà prévu, histoire de
ne pas réinventer la roue ...
Merci.
Nicolas.
Oui, c'est une limitation enquiquinante pour l'instant. C'est prévu pour la suite.
D'abord, la méthode que tu utilise n'est pas saine du tout: ça n'est pas dans article.php3 qu'il faut faire les includes.
Pour l'heure, tu peux très bien faire des includes dans tes squelettes, directement dans article.html. Il suffit d'ajouter:
<? include("header.php3"); ?>
dans ton fichier article.html.
La limite, c'est que ce fichier header.php3 ne peut pas être un fichier SPIP (c'est-à-dire associé à un squelette). Ca ne peut être qu'un include "simple", c'est-à-dire du PHP normal (sans SPIP) et/ou du HTML. Ca couvre déjà une grosse partie des besoins d'un header (et d'un footer). Dans uZine, la barre de navigation du haut et la barre du bas sont font appel à des header et footer PHP tous bêtes (à part le fait que c'est du HTML un peu compliqué pour gérer les layers transparents).
ARNO*
Bonsoir ARNO*,
Oui, c'est une limitation enquiquinante pour l'instant. C'est prévu
pour la suite.
Génial !!!
D'abord, la méthode que tu utilise n'est pas saine du tout: ça n'est
pas dans article.php3 qu'il faut faire les includes.
C'est pourtant là qu'est inclu le squelette de l'article, non ?
Pour l'heure, tu peux très bien faire des includes dans tes
squelettes, directement dans article.html. Il suffit d'ajouter:
<? include("header.php3"); ?>
dans ton fichier article.html.
Ah, on peut mettre tout le PHP que l'on veut dans les squelettes, ça
ne risque pas de poser de problèmes au moteur de SPIP ???
Si c'est bien vrai, c'est cool, je vais pouvoir m'amuser ...
La limite, c'est que ce fichier header.php3 ne peut pas être un
fichier SPIP (c'est-à-dire associé à un squelette).
OK, pas de problème, ce n'est pas nécessaire pour l'instant ...
Merci.
Nicolas.
PS: tiens, au passage, en me baladant sur les pages de la doc SPIP, la
version annoncée comme actuelle est parfois la 1.0.2 et parfois la
1.0.3 mais je suppose que c'est parce que la durée de vie du cache de
ces pages est importante ...
Nicolas Hoizey wrote:
C'est pourtant là qu'est inclu le squelette de l'article, non ?
Moui, enfin dans inc-public.php3 plutôt. Mais la logique
veut que l'inclusion fasse partie de la mise en page,
donc plutôt des squelettes. De plus, c'est plus souple,
car tu peux faire ton inclusion n'importe où, et non
seulement avant ou après.
Ah, on peut mettre tout le PHP que l'on veut dans les squelettes, ça
ne risque pas de poser de problèmes au moteur de SPIP ???
A condition de ne pas interférer avec les variables globales
utilisées par SPIP, ce genre de choses, c'est bon. Par contre,
le code PHP en question est exécuté à chaque affichage de page
(c'est le PHP qui est mis en cache, pas le HTML), donc il vaut
mieux éviter les calculs trop lourds.
PS: tiens, au passage, en me baladant sur les pages de la doc SPIP, la
version annoncée comme actuelle est parfois la 1.0.2 et parfois la
1.0.3 mais je suppose que c'est parce que la durée de vie du cache de
ces pages est importante ...
Oui. A priori, au maximum 24 heures.
a+