Salut à tous,
Je souhaiterais faire une page menugauche.html ( et menugauche.php3) afin de
pouvoir l'inclure dans toutes les autres pages du site.
Problème:
Si je fais <? include("menugauche.html") ?> , l'inclusion se fait bien mais
les boucles qui sont dans menugauche.html ne sont pas exécutées (ce qui est
logique).
Si je fais <? include("menugauche.php3") ?>, l'inclusion ne se fait pas du
tout...
Quelqu'un voit-il une astuce?
MERCI
Salut,
Pour l'instant, le problème que tu rencontres est une des petites limitations ennuyeuses de SPIP, qu'on souhaite résoudre depuis un moment, mais qu'on veut résoudre proprement (alors forcément ça prend plus de temps) :-))
En effet, pour l'instant, si tu tentes d'inclure (en PHP) une autre page créée par SPIP (comprendre: un squelette qui tente d'inclure un autre squelette), tu obtiens au mieux un message d'erreur (double définition de fonctions). Conclusion: tu ne peux pas... Ce que tu peux inclure facilement, c'est uniquement une page statique, avec du bon vieux HTML tout simple.
Pour illustrer le propos, imaginons que tu aies programmé une boucle très chiadée, qui fabrique un tableau (<table...> et tout le tintouin) très graphique, qui va chercher les dernières nouveautés du site, mélangées avec des noms de rubriques et des mots clés et plein d'autres choses, bref un truc assez maousse, utile sur toutes les pages du site, mais que tu préférerais ne pas à avoir à copier-coller sur chaque page. La solution évidente en PHP: tu fais ces boucles dans une page séparée (avec le couple html/php3 des squelettes de SPIP), et dans chaque autre squelette, tu ajoutes simplement un <? include("..."); ?> de cette page. Sauf que... ça ne fonctionne pas, car SPIP va alors effectuer certaines opérations plusieurs fois, et t'afficher un superbe message d'erreur.
Il existe une solution sur _certains_ serveurs, qui est de faire l'include non sur le fichier "mapage.php3" directement, mais en passant par Apache. Donc faire l'include sur "monsite.com - Ce site web est à vendre ! - Ressources et information concernant monsite Resources and Information.; au lieu de "mapage.php3" tout court. Quelque chose du genre:
<? include("monsite.com - Ce site web est à vendre ! - Ressources et information concernant monsite Resources and Information.); ?
De cette façon, ce que tu charges, c'est le résultat déjà interprété par le serveur de ta page, et non un fichier PHP à interpréter à nouveau.
ATTENTION: c'est très loin de fonctionner partout, et particulier ça fonctionne très rarement sur les hébergeurs gratuits.
Si ça coince, tu peux essayer de bidouiller un peu plus, avec un "$letexte = file("http://www.monsite…"), traiter ce $letexte (avec le "join..." habituel dans ce cas) pour l'afficher. Je ne développe pas ici, ça n'est pas le lieu.
Enfin, je signale qu'il est possible de balancer des balises SPIP à l'intérieur du code PHP inclus dans les squelettes, ce qui permet ici par exemple de faire des includes sur des pages ayant des variables. Par exemple:
<? include("monsite.com - Ce site web est à vendre ! - Ressources et information concernant monsite Resources and Information.); ?>
permettrait de récupérer une version de "mapage.php3" qui varie selon la rubrique (ce qui est le principe des squelettes). Je ne développe pas non plus ici, vu que ça demande plus des compétences en PHP qu'en SPIP. Mais si tu maîtrises bien PHP, y'a vraiment moyen de s'amuser de ce côté-là également.
Amicalement,
ARNO*
At 1:05 +0100 15/11/01, tlo, wrote:
Salut à tous,
Je souhaiterais faire une page menugauche.html ( et menugauche.php3) afin de
pouvoir l'inclure dans toutes les autres pages du site.
Problème:
Si je fais <? include("menugauche.html") ?> , l'inclusion se fait bien mais
les boucles qui sont dans menugauche.html ne sont pas exécutées (ce qui est
logique).
Si je fais <? include("menugauche.php3") ?>, l'inclusion ne se fait pas du
tout...
Quelqu'un voit-il une astuce?
MERCI_______________________________________________
spip mailing list
spip@rezo.net
http://listes.rezo.net/mailman/listinfo/spip
--
Le Scarabée : http://www.scarabee.com
uZine 2 : http://www.uzine.net
DH/DSS, 0x11930F0B, DEEB 602D B344 644B AF88 BF73 85F4 2297 1193 0F0B