Christian Lefebvre a écrit:
Le Wed 22/10/2003 à 10:16, Alain BarBason a écrit :
Bonjour,
C'est en effet possible, mais c'est un peu de chipot, je trouve.
J'aimerais mieux pourvoir mettre un <include path/monfichier.html>
où path/monfichier.html pourrait être facilement modifiable via FTP ou
autre.
Alors il faut passer par un champ extra "html" qui contiencra le nom
du fichier html, et mettre un truc de ce genre dansle squelette :
[<? include("(#EXTRA|extra{"html"})); ?>]
Bon .. devant une telle lisibilité, ça demande une explication 
En gros, il faut faire <? include("quelquechose"); ?> avec quelquechose
tiré d'un champ de l'article, donc ici #EXTRA|extra{"html"} pour récupérer
la donnée "html" du champ extra.
Bon, je suis arrivé à une solution.
Encore un peu boiteuse, mais c'est un début.
Je met la ligne
myinclude myfile="essai.html"
comme texte dans un article
Dans mon squelette, je mets
[<div class="texte">(#TEXTE|monfiltre)</div>]
(le truc de base plus "|monfiltre"
dans mes_fonctions.php3 (voir plus bas) je mets un routine "monnfiltre" qui regarde si il y a "myinclude", si oui, recupère le nom du fichier "essai.html", y rajoute la path, le lit en ne gardant que ce qui se trouve entre body et /body et renvoie la sélection.
Bon, c'est pas très rigoureux et portable, mais je vais fignoler.
Par contre, je n'ai pas compris l'histoire de "EXTRA", c'est un champ prévu pour faire des choses spécials ? j'ai pas toruvé de doc dessus. Ou est-ce une idée de chose à faire ?
Car en effet, plutot que de passer par un "myinclude" a rehcercher dnas le texte, je pourrais mettre directement "monfichier.html" dans un champ EXTRA et y afficher le fichier.
--------------------------------------------------------------
<?php
function monfiltre($texte) {
// vérifie si c'est un cas spécial
if (ereg("myinclude",$texte)) {
// récupère le nom du fichier, un brutale, mais bon, c'est un début
$resul=split("\"",$texte);
// rajoute le path
$file="/home/fspst/www/spip/html/$resul[1]";
$fp=fopen($file,'r');
$taille=filesize($file);
// lit ligne par ligne jusqu'au premier body
while (!feof($fp) and (!ereg("BODY",$line)) ) {
$line=fgets($fp,$taille);
}
$line="";
$line2="";
// lit les lignes suivant jusqu'au deuxième body
while (!feof($fp) and (!ereg("BODY",$line2))) {
$line.=$line2;
$line2=fgets($fp,$taille);
}
fclose($fp);
// revient avec le fichier compris entre body et /body
return($line);
} else { // cas normal, on fait rien
return($texte);
}
}
?>
--
by AlainBB
http://www.barbason.be