|
Subject: Re: Re: afficher un document html dans un squellette Newsgroups: gmane.comp.web.spip.user Date: 2004-05-18 22:16:43 GMT (4 years, 28 weeks, 2 days, 9 hours and 2 minutes ago)
Bon, j'ai fait quelque filtres permettant de faire ça. En gros, j'ai
développé deux approches.
1ière solution: Faire un include des fichiers à insérer dans ta page. Pour pouvoir faire ça dans un filtre, il faut faire un premier filtre qui va chercher une balise spécifiant la page à inclure (par ex <inclure_fichier le_nom_du_fichier> et récupérer le nom du fichier dans une variable. Ensuite tu peux remplacer ta balise par le contenu du fichier à l'aide de la fonction suivante: // fonction insérant le résulat de l'exécution d'un fichier php function my_include($filename){ ob_start(); // On bufferise l'output include($filename) ; // ici l'include va pas sur l'output mais dans le buffer $retour = ob_get_contents(); // on récupère le contenu du buffer dans une variable ob_end_clean(); // on ferme et flush le buffer return $retour; // on renvoi le contenu du fichier } Ça s'appelle comme ça function mon_filtre($fl_txt){ // On initialise $le_fichier_a_inclure = "" ; $fl_replace_in=""; // On va utiliser une expression régulière pour parser la balise et récupérer l'adresse de la page à inclure $fl_patern_in="|<inclure_fichier([^>]*?)>|i"; // On traite que si la balise est présente if (preg_match($fl_patern_in, $fl_txt, $matches) ) { // Et que si une adresse est spécifiée if (trim($matches[1])<>""){ $le_fichier_a_inclure=trim($matches[1]); $fl_replace_in1= <at> my_include($le_fichier_a_inclure); // ici, pour être propre, il faut ajouter une fonction qui extrait que ce qui est compris // entre les balises <body> et </body> de ton fichier include. C'est la fonction filtrehtml. // Au départ, je prenais aussi les styles, mais c'est trop risqué si certains s'appellent comme // dans ton site "hote". $fl_txt = filtrehtml($fl_txt); $fl_txt = preg_replace($fl_patern_in, "$fl_replace_in1", $fl_txt); } } return $fl_txt; } function filtrehtml($pagehtml){ if (eregi("< *body[^>]*>(.*)</body[^>]*>",$pagehtml,$regs)){ $retour = $regs[1]; } else { $retour = $pagehtml; } return $retour; } Et dans la boucle article de ton squelette tu met qqchose comme [(#TEXTE|mon_filtre)] et il suffit alors dans le texte de tes articles de mettre <inclure_fichier mon_fichier.php> ou <inclure_fichier /mon/chemin/mon_autre_fichier.html> Ça marche bien pour des pages sans liens entre elles (car sinon les liens font sortir de ton site). 2ième solution: Une fonction qui insère, non pas un fichier, mais carrément une page web lu sur n'importe quelle adresse. Là, j'ai la flemme de faire des commentaires, alors je livre en brut... Saches seulement que ça me permet de browser des répertoires depuis mon site et même de faire apparaitre google dans mon site... C'est encore en version béta. // Liste des sites autorisés à être affichés dans le site: $GLOBALS['Authorized_sites']=array( "http://www.google.fr", "http://www.planck-hfi.org"); /* ***************** VO ******************** GetUrl v1.1 Originally written by tahmer <at> free.fr Modified by legrand <at> iap.fr return: -1 cant connect 0 protocol error 1 ok mandatory parameters $hostwebserver (ie: "www.web.com") $urlin page beginning with "/" (ie: "/index.html") $fl_param parameter which have to be passed to the requested page $cookie list of cookie syntax: [name=value [ ';' name=value]] ie: cookie1=v1 or cookie1=v1; cookie2=v2; ... output parameters $page(out) content of url $header(out) content of header optional parameters $fl_login (login and password for basic .htaccess $fl_password authentification protected pages: "" if none ) $fl_timeout Timeout for connection exemple: login on a web server the login process send a cookie "MagicNumber" witch is mandatory to access a database result page ps: cookie are sent by server in the header Set-Cookie: name=value;.... $res=readurl("www.webserver.com","/login.cgi?user_name=me&password=mypass","",$page,$header); if ($res!=1) exit; $MagicNumber=0; if (preg_match("/Set-Cookie:\s+MagicNumber=(\d+)/i", $header, $parts)) $MagicNumber=$parts[1]; if ($MagicNumber==0) exit; $res=readurl("www.webserver.com","/result.cgi?query=my_query","MagicNumber=$MagicNumber",$page,$header); */ function GetUrl($host ,$urlin,$fl_param,$cookie,&$page,&$header,$fl_login="", $fl_password="", $fl_timeout="20",$reecriturl="true",$servport="80"){ if (site_autorise("http://".$host.$urlin)){ if ($fl_param==""){$url = $urlin;} else {$url = $urlin."?".$fl_param;}; $page=""; $header=""; $sock=fsockopen($host, $servport , $errno , $errstr, 30); if (!$sock) {echo "$errstr ($errno)<br />\n"; return -1;}; //socket_set_timeout($sock, $fl_timeout); // this feature is not supported by our php built $msg="GET $url HTTP/1.1"; //$msg="GET / HTTP/1.1"; if ($cookie!="") $msg.="\r\nCookie: $cookie"; $msg.="\r\n"."Host: $host\r\nConnection: Close"."\r\n"."User-Agent: ".$_SERVER['HTTP_USER_AGENT']."\r\n"; //$msg.="\r\n"."Host: $url\r\nConnection: Keep-Alive"."\r\n"."User-Agent: ".$_SERVER["HTTP_USER_AGENT"]."\r\n"; if ($fl_login) $msg.="Authorization: Basic ".base64_encode("$fl_login:$fl_password")."\r\n"; $msg.="\r\n\r\nAccept: */* "; //, text/plain, image/*, */* "; $msg.="\r\n\r\n\r\n\r\n"; fputs($sock,$msg); $chunked=0; // read header while ($buffer=fgets($sock,4096)) { if ($buffer=="\r\n") break; $header.=$buffer; if (preg_match("/Transfer-Encoding:\s+(.+)\r\n/U", $buffer, $parts)) if (strtoupper($parts[1])=="CHUNKED") $chunked=1; else echo "**???".$parts[1]."??\r\n"; } if ($chunked==0) { while ($buffer = fgets($sock, 4096)) { $buffer=fread($sock,4096); $page.=$buffer; } } else { while ($buffer = fgets($sock, 4096)) { if (!preg_match("/\s*([\dABCDEFabcdef]+)\s*\r\n/i", $buffer, $parts)) { echo "**chunk size not found : $buffer\r\n"; return 0; } $size = (int)base_convert(strtoupper($parts[1]), 16, 10); if ($size==0) break; $buffer=fread($sock,$size); if (strlen($buffer)!=$size) { echo "**reading : $size\r\n"; echo "**readed : ".strlen($buffer)."\r\n"; return 0; } $page.=$buffer; //echo $buffer; $buffer=fgets($sock,4096); if ($buffer!="\r\n") { echo "**CRLF not found : $buffer\r\n"; return 0; } } } if ($reecriturl=="true"){ // On réecrit les URL en absolu // VOIR A UTILISER realpath ? // Les liens href = "bla bla" mais aussi <href = bli.bli > $page = preg_replace( "|href= *\"\.(?!http:)([^\"]*)\"|i", "href=\"http://".$host.dirname($urlin)."/\\1\"", $page); $page = preg_replace( "|href= *\"/(?!http:)([^\"]*)\"|i", "href=\"http://".$host."/\\1\"", $page); $page = preg_replace( "|href= *\"(?!http:)([^\"]*)\"|i", "href=\"http://".$host.$urlin."\\1\"", $page); $page = preg_replace( "|href= *\.(?!\")(?!http:)([^>]*)>|i", "href=\"http://".$host.dirname($urlin)."/\\1\">", $page); $page = preg_replace( "|href= *(?!\")/(?!http:)([^>]*)>|i", "href=\"http://".$host."/\\1\">", $page); $page = preg_replace( "|href= *(?!\")(?!http:)([^>]*)>|i", "href=\"http://".$host.$urlin."\\1\">", $page); // les images $page = preg_replace( "|src= *\"\.(?!http:)([^\"]*)\"|i", "src=\"http://".$host.dirname($urlin)."/\\1\"", $page); $page = preg_replace( "|src= *\"/(?!http:)([^\"]*)\"|i", "src=\"http://".$host."/\\1\"", $page); $page = preg_replace( "|src= *\"(?!http:)([^\"]*)\"|i", "src=\"http://".$host.dirname($urlin)."/\\1\"", $page); $page = preg_replace( "|src= *\.(?!\")(?!http:)([^>]*)>|i", "src=\"http://".$host.dirname($urlin)."/\\1\">", $page); $page = preg_replace( "|src= *(?!\")/(?!http:)([^>]*)>|i", "src=\"http://".$host."/\\1\">", $page); $page = preg_replace( "|src= *(?!\")(?!http:)([^>]*)>|i", "src=\"http://".$host.dirname($urlin)."/\\1\">", $page); // les formulaires (risky !!!) $page = preg_replace( "|form action= *\"\.(?!http:)([^\"]*)\"|i", "form action=\"http://".$host.dirname($urlin)."/\\1\"", $page); $page = preg_replace( "|form action= *\"/(?!http:)([^\"]*)\"|i", "form action=\"http://".$host."/\\1\"", $page); $page = preg_replace( "|form action= *\"(?!http:)([^\"]*)\"|i", "form action=\"http://".$host.dirname($urlin)."/\\1\"", $page); $page = preg_replace( "|form action= *\.(?!\")(?!http:)([^>]*)>|i", "form action=\"http://".$host.dirname($urlin)."/\\1\">", $page); $page = preg_replace( "|form action= *(?!\")/(?!http:)([^>]*)>|i", "form action=\"http://".$host."/\\1\">", $page); $page = preg_replace( "|form action= *(?!\")(?!http:)([^>]*)>|i", "form action=\"http://".$host.dirname($urlin)."/\\1\">", $page); } fclose($sock); return 1; } else{ $page="You cannot display the requested url."; $header=""; } } //fonction de calcul d'une url absolue function absurl($urlaanalyser, $serveur, $pathurlbase){ $newurl= parse_url($urlaanalyser); echo "path = ".$newurl[path]." original=".$urlaanalyser; if (isset($newurl[scheme])) { // c'est une url absolue car http ou ftp est défini return $urlaanalyser; } elseif (eregi("^/*",$urlaanalyser)){ // Le chemin défini est absolu return "http://".$serveur.$newurl[path]; } else { // c'est une url relative: on la transforme return "http://".$serveur.$pathurlbase.$newurl[path]; } } // fonction de réécriture des liens d'une page html insérée function rewritelinks($pagehtml, $pageappelante){ //return eregi_replace( "^< *href=([^>]*)>$", "<href=\"$pageappelante&requestedurl=\\1 \"", $pagehtml); return eregi_replace( "href= *\"", "href=\"$pageappelante&requestedurl=", $pagehtml); } // Fonction renvoyant trou si l'url passée est autorisée pour l'affichage et faulse sinon function site_autorise($url){ $retour = false; foreach ($GLOBALS['Authorized_sites'] as $unsite){ if (ereg($unsite, $url)){$retour=true;break;} } return $retour; } Et puis j'ai un squelette spécifique pour browser: browse.php <? if (!isset($requestedurl)){$requestedurl="http://adresse.par.defaut.com";}; $url=parse_url($requestedurl); GetUrl($url[host],$url[path],$url[query],"",$page,$tete,"", ""); $page= filtrehtml($page); $page = rewritelinks($page, $PHP_SELF."?".eregi_replace("\&requestedurl.*", "",$argv[0])); ?> <div align="right"><a href="<? echo $requestedurl; ?>" title="open" target="_blank"><font size="-3">Open this page in a new frame</font> </a></div> <? echo $page; ?> Dans mes articles je met: <browse http://www.blablabla.fr > et j'ai un filtre que j'applique systématiquement: function fl_browse($fl_txt){ global $requestedurl; $fl_patern_in="|<browse([^>]*?)>|i"; $fl_replace_in1=""; if (preg_match($fl_patern_in, $fl_txt, $matches) ) { if (trim($matches[1])<>""){ if (!isset($requestedurl)){ $requestedurl=trim($matches[1]); } } $fl_txt = preg_replace($fl_patern_in, "$fl_replace_in1", $fl_txt); //$rechercher="<browse>"; //if (strstr($fl_txt,$rechercher)!==false){ $GLOBALS['flbrowse']=true; //$fl_txt = str_replace($rechercher, "", $fl_txt); } return $fl_txt; } Et dans mes squelettes j'ai: <? if ($flbrowse){ include("squelettes/browse.php"); } ?> Ouf... C'est un peu long je me rends compte !!!! En espérant que ça peut aider... Good luck Francois Bernier wrote: Raphael a écrit le 18/05/04 14:41 :Bonjour, j'aimerais transférer un site xeistant sur SPIP il est-il possible de conserver mes pages déja fignolées en html et de les faire apparaitre via un document de type html (document non joint mais inséré) ? cela reviendrai par exemple a afficher mon document dans un div de mon squellete article ? possible, pas possible, comment ? Merci de vos suggestions RaphaëlNe sachant pas si ça répond directement à ton besoin... dans: espace privée > édition du site > articles Tu as l'option "redirection" qui offre la possibilité de créer un article virtuel pointant vers une page déjà existante (tes pages html). Cet article sera référencée comme un "vrai" article dans ton site. Tu n'aurais pas ainsi à imbriquer tout ton matériel existant dans des squelettes. Tes pages restent cependant "statiques", non-modifiables par spip, seulement par ftp. Elles ne seront pas non plus affichées selon le squelette "article". (Je ne sais pas si le moteur de recherche reconnait leur contenu? Quelqu'un le sait-il?) Francois _______________________________________________ liste spip spip <at> rezo.net - désabonnement : spip-off <at> rezo.net Infos et archives : http://listes.rezo.net/mailman/listinfo/spip Documentation de SPIP : http://www.spip.net/ irc://irc.freenode.net/spip
<div>
Bon, j'ai fait quelque filtres permettant de faire ça. En gros, j'ai
développé deux approches.<br><br>
1ière solution: Faire un include des fichiers à insérer dans ta page.
Pour pouvoir faire ça dans un filtre, il faut faire un <br>
premier filtre qui va chercher une balise spécifiant la page à inclure
(par ex <inclure_fichier le_nom_du_fichier> et récupérer<br>
le nom du fichier dans une variable. Ensuite tu peux remplacer ta
balise par le contenu du fichier à l'aide de la fonction suivante:<br><br>
// fonction insérant le résulat de l'exécution d'un fichier php<br>
function my_include($filename){<br>
ob_start(); // On bufferise l'output<br>
include($filename) ; // ici l'include va pas sur l'output mais
dans le buffer <br>
$retour = ob_get_contents(); // on récupère le contenu du buffer
dans une variable<br>
ob_end_clean(); // on ferme et flush le buffer<br>
return $retour; // on renvoi le contenu du fichier<br>
}<br><br>
Ça s'appelle comme ça<br>
function mon_filtre($fl_txt){<br>
// On initialise<br>
$le_fichier_a_inclure = "" ;<br>
$fl_replace_in="";<br>
<br>
// On va utiliser une expression régulière pour parser la balise et
récupérer l'adresse de la page à inclure<br>
$fl_patern_in="|<inclure_fichier([^>]*?)>|i";<br>
// On traite que si la balise est présente<br>
if (preg_match($fl_patern_in, $fl_txt, $matches) ) {<br>
// Et que si une adresse est spécifiée<br>
if (trim($matches[1])<>""){ <br>
$le_fichier_a_inclure=trim($matches[1]); <br>
$fl_replace_in1= <at> my_include($le_fichier_a_inclure); <br>
// ici, pour être propre, il faut ajouter une fonction
qui extrait que ce qui est compris<br>
// entre les balises <body> et </body> de
ton fichier include. C'est la fonction filtrehtml.<br>
// Au départ, je prenais aussi les styles, mais c'est
trop risqué si certains s'appellent comme <br>
// dans ton site "hote".<br>
$fl_txt = filtrehtml($fl_txt);<br>
$fl_txt = preg_replace($fl_patern_in,
"$fl_replace_in1", $fl_txt);<br>
} <br>
}<br>
return $fl_txt;<br>
}<br><br><br>
function filtrehtml($pagehtml){<br>
if (eregi("<
*body[^>]*>(.*)</body[^>]*>",$pagehtml,$regs)){<br>
$retour = $regs[1];<br>
}<br>
else {<br>
$retour = $pagehtml;<br>
}<br>
return $retour;<br>
}<br><br><br><br>
Et dans la boucle article de ton squelette tu met qqchose comme <br>
[(#TEXTE|mon_filtre)]<br>
et il suffit alors dans le texte de tes articles de mettre
<inclure_fichier mon_fichier.php> ou <inclure_fichier
/mon/chemin/mon_autre_fichier.html><br><br>
Ça marche bien pour des pages sans liens entre elles (car sinon les
liens font sortir de ton site).<br><br><br>
2ième solution: Une fonction qui insère, non pas un fichier, mais
carrément une page web lu sur n'importe quelle adresse.<br>
Là, j'ai la flemme de faire des commentaires, alors je livre en brut...
Saches seulement que ça me permet de browser des <br>
répertoires depuis mon site et même de faire apparaitre google dans mon
site... C'est encore en version béta.<br><br><br>
// Liste des sites autorisés à être affichés dans le site:<br>
$GLOBALS['Authorized_sites']=array( <br>
<a class="moz-txt-link-rfc2396E" href="http://www.google.fr">"http://www.google.fr"</a>,<br>
<a class="moz-txt-link-rfc2396E" href="http://www.planck-hfi.org">"http://www.planck-hfi.org"</a>);<br><br><br><br><br><br>
/*<br>
***************** VO ********************≤br>
GetUrl v1.1<br>
Originally written by <a class="moz-txt-link-abbreviated" href="mailto:tahmer <at> free.fr">tahmer <at> free.fr</a><br>
Modified by <a class="moz-txt-link-abbreviated" href="mailto:legrand <at> iap.fr">legrand <at> iap.fr</a><br>
return: <br>
-1 cant connect<br>
0 protocol error<br>
1 ok<br>
mandatory parameters<br>
$hostwebserver (ie: "<a class="moz-txt-link-abbreviated" href="http://www.web.com">www.web.com</a>")<br>
<br>
$urlin page beginning with "/" (ie: "/index.html")<br>
$fl_param parameter which have to be passed to the requested page<br>
$cookie list of cookie<br>
syntax: [name=value [ ';' name=value]]<br>
ie: cookie1=v1<br>
or<br>
cookie1=v1; cookie2=v2; ...<br><br>
output parameters<br>
$page(out) content of url<br>
$header(out) content of header<br>
<br>
optional parameters<br>
$fl_login (login and password for basic .htaccess <br>
$fl_password authentification protected pages: "" if none )<br>
$fl_timeout Timeout for connection<br>
<br>
exemple:<br>
login on a web server<br>
the login process send a cookie "MagicNumber" witch is mandatory to<br>
access a database result page<br>
ps: cookie are sent by server in the header <br>
Set-Cookie: name=value;....<br>
$res=readurl("<a class="moz-txt-link-abbreviated" href="http://www.webserver.com">www.webserver.com</a>","/login.cgi?user_name=me&password=mypass","",$page,$header);<br>
if ($res!=1) exit;<br>
$MagicNumber=0;<br>
if (preg_match("/Set-Cookie:\s+MagicNumber=(\d+)/i", $header,
$parts))<br>
$MagicNumber=$parts[1];<br>
if ($MagicNumber==0) exit;<br>
$res=readurl("<a class="moz-txt-link-abbreviated" href="http://www.webserver.com">www.webserver.com</a>","/result.cgi?query=my_query","MagicNumber=$MagicNumber",$page,$header);<br>
*/<br>
function GetUrl($host
,$urlin,$fl_param,$cookie,&$page,&$header,$fl_login="",
$fl_password="", $fl_timeout="20",$reecriturl="true",$servport="80"){<br><br>
if (site_autorise(<a class="moz-txt-link-rfc2396E" href="http://">"http://"</a>.$host.$urlin)){<br>
if ($fl_param==""){$url = $urlin;} else {$url =
$urlin."?".$fl_param;};<br>
$page="";<br>
$header="";<br>
$sock=fsockopen($host, $servport , $errno , $errstr, 30);<br>
if (!$sock) {echo "$errstr ($errno)<br />\n"; return -1;};<br>
//socket_set_timeout($sock, $fl_timeout); // this feature is not
supported by our php built<br>
$msg="GET $url HTTP/1.1";<br>
//$msg="GET / HTTP/1.1";<br>
if ($cookie!="") $msg.="\r\nCookie: $cookie";<br>
$msg.="\r\n"."Host: $host\r\nConnection: Close"."\r\n"."User-Agent:
".$_SERVER['HTTP_USER_AGENT']."\r\n";<br>
//$msg.="\r\n"."Host: $url\r\nConnection:
Keep-Alive"."\r\n"."User-Agent: ".$_SERVER["HTTP_USER_AGENT"]."\r\n";<br>
if ($fl_login) $msg.="Authorization: Basic
".base64_encode("$fl_login:$fl_password")."\r\n";<br>
$msg.="\r\n\r\nAccept: */* "; //, text/plain, image/*, */* ";<br>
$msg.="\r\n\r\n\r\n\r\n";<br>
<br>
fputs($sock,$msg);<br>
$chunked=0;<br>
// read header<br>
while ($buffer=fgets($sock,4096)) {<br>
if ($buffer=="\r\n") break;<br>
$header.=$buffer;<br>
if (preg_match("/Transfer-Encoding:\s+(.+)\r\n/U", $buffer,
$parts))<br>
if (strtoupper($parts[1])=="CHUNKED") $chunked=1;<br>
else echo "**???".$parts[1]."??\r\n";<br>
}<br>
<br>
if ($chunked==0) {<br>
while ($buffer = fgets($sock, 4096)) {<br>
$buffer=fread($sock,4096);<br>
$page.=$buffer;<br>
}<br>
}<br>
else {<br>
while ($buffer = fgets($sock, 4096)) {<br>
if (!preg_match("/\s*([\dABCDEFabcdef]+)\s*\r\n/i",
$buffer, $parts)) {<br>
echo "**chunk size not found : $buffer\r\n";<br>
return 0;<br>
}<br>
$size = (int)base_convert(strtoupper($parts[1]), 16, 10);<br>
if ($size==0) break;<br>
$buffer=fread($sock,$size);<br>
if (strlen($buffer)!=$size) {<br>
echo "**reading : $size\r\n";<br>
echo "**readed : ".strlen($buffer)."\r\n";<br>
return 0;<br>
}<br>
$page.=$buffer;<br>
//echo $buffer;<br>
$buffer=fgets($sock,4096);<br>
if ($buffer!="\r\n") {<br>
echo "**CRLF not found : $buffer\r\n";<br>
return 0;<br>
}<br>
}<br>
}<br>
<br>
<br>
if ($reecriturl=="true"){<br>
// On réecrit les URL en absolu<br>
// VOIR A UTILISER realpath ?<br>
// Les liens href = "bla bla" mais aussi <href = bli.bli
><br>
$page = preg_replace( "|href= *\"\.(?!http:)([^\"]*)\"|i",
"href=\<a class="moz-txt-link-rfc2396E" href="http://">"http://"</a>.$host.dirname($urlin)."/\\1\"", $page); <br>
$page = preg_replace( "|href= *\"/(?!http:)([^\"]*)\"|i",
"href=\<a class="moz-txt-link-rfc2396E" href="http://">"http://"</a>.$host."/\\1\"", $page);<br>
$page = preg_replace( "|href= *\"(?!http:)([^\"]*)\"|i",
"href=\<a class="moz-txt-link-rfc2396E" href="http://">"http://"</a>.$host.$urlin."\\1\"", $page);<br>
<br>
$page = preg_replace( "|href=
*\.(?!\")(?!http:)([^>]*)>|i",
"href=\<a class="moz-txt-link-rfc2396E" href="http://">"http://"</a>.$host.dirname($urlin)."/\\1\">", $page); <br>
$page = preg_replace( "|href=
*(?!\")/(?!http:)([^>]*)>|i",
"href=\<a class="moz-txt-link-rfc2396E" href="http://">"http://"</a>.$host."/\\1\">", $page);<br>
$page = preg_replace( "|href=
*(?!\")(?!http:)([^>]*)>|i",
"href=\<a class="moz-txt-link-rfc2396E" href="http://">"http://"</a>.$host.$urlin."\\1\">", $page);<br>
<br>
<br>
// les images<br>
$page = preg_replace( "|src= *\"\.(?!http:)([^\"]*)\"|i",
"src=\<a class="moz-txt-link-rfc2396E" href="http://">"http://"</a>.$host.dirname($urlin)."/\\1\"", $page);<br>
$page = preg_replace( "|src= *\"/(?!http:)([^\"]*)\"|i",
"src=\<a class="moz-txt-link-rfc2396E" href="http://">"http://"</a>.$host."/\\1\"", $page);<br>
$page = preg_replace( "|src= *\"(?!http:)([^\"]*)\"|i",
"src=\<a class="moz-txt-link-rfc2396E" href="http://">"http://"</a>.$host.dirname($urlin)."/\\1\"", $page);<br>
<br>
$page = preg_replace( "|src=
*\.(?!\")(?!http:)([^>]*)>|i",
"src=\<a class="moz-txt-link-rfc2396E" href="http://">"http://"</a>.$host.dirname($urlin)."/\\1\">", $page); <br>
$page = preg_replace( "|src=
*(?!\")/(?!http:)([^>]*)>|i", "src=\<a class="moz-txt-link-rfc2396E" href="http://">"http://"</a>.$host."/\\1\">",
$page);<br>
$page = preg_replace( "|src=
*(?!\")(?!http:)([^>]*)>|i",
"src=\<a class="moz-txt-link-rfc2396E" href="http://">"http://"</a>.$host.dirname($urlin)."/\\1\">", $page);<br>
<br>
// les formulaires (risky !!!)<br>
$page = preg_replace( "|form action=
*\"\.(?!http:)([^\"]*)\"|i", "form
action=\<a class="moz-txt-link-rfc2396E" href="http://">"http://"</a>.$host.dirname($urlin)."/\\1\"", $page);<br>
$page = preg_replace( "|form action=
*\"/(?!http:)([^\"]*)\"|i", "form action=\<a class="moz-txt-link-rfc2396E" href="http://">"http://"</a>.$host."/\\1\"",
$page);<br>
$page = preg_replace( "|form action=
*\"(?!http:)([^\"]*)\"|i", "form
action=\<a class="moz-txt-link-rfc2396E" href="http://">"http://"</a>.$host.dirname($urlin)."/\\1\"", $page);<br>
<br>
$page = preg_replace( "|form action=
*\.(?!\")(?!http:)([^>]*)>|i", "form
action=\<a class="moz-txt-link-rfc2396E" href="http://">"http://"</a>.$host.dirname($urlin)."/\\1\">", $page); <br>
$page = preg_replace( "|form action=
*(?!\")/(?!http:)([^>]*)>|i", "form
action=\<a class="moz-txt-link-rfc2396E" href="http://">"http://"</a>.$host."/\\1\">", $page);<br>
$page = preg_replace( "|form action=
*(?!\")(?!http:)([^>]*)>|i", "form
action=\<a class="moz-txt-link-rfc2396E" href="http://">"http://"</a>.$host.dirname($urlin)."/\\1\">", $page);<br>
<br>
<br>
}<br>
fclose($sock);<br>
return 1;<br>
}<br>
else{<br>
$page="You cannot display the requested url.";<br>
$header="";<br>
}<br>
}<br><br>
//fonction de calcul d'une url absolue<br>
function absurl($urlaanalyser, $serveur, $pathurlbase){<br>
$newurl= parse_url($urlaanalyser);<br>
echo "path = ".$newurl[path]." original=".$urlaanalyser;<br>
if (isset($newurl[scheme])) {<br>
// c'est une url absolue car http ou ftp est défini <br>
return $urlaanalyser;<br>
}<br>
elseif (eregi("^/*",$urlaanalyser)){<br>
// Le chemin défini est absolu<br>
return <a class="moz-txt-link-rfc2396E" href="http://">"http://"</a>.$serveur.$newurl[path];<br>
<br>
}<br>
else {<br>
// c'est une url relative: on la transforme<br>
return <a class="moz-txt-link-rfc2396E" href="http://">"http://"</a>.$serveur.$pathurlbase.$newurl[path];<br>
}<br>
}<br><br>
// fonction de réécriture des liens d'une page html insérée <br>
function rewritelinks($pagehtml, $pageappelante){<br>
//return eregi_replace( "^< *href=([^>]*)>$",
"<href=\"$pageappelante&amp;requestedurl=\\1 \"", $pagehtml);<br>
return eregi_replace( "href= *\"",
"href=\"$pageappelante&amp;requestedurl=", $pagehtml);<br><br>
}<br><br>
// Fonction renvoyant trou si l'url passée est autorisée pour
l'affichage et faulse sinon<br>
function site_autorise($url){<br>
$retour = false;<br>
foreach ($GLOBALS['Authorized_sites'] as $unsite){<br>
if (ereg($unsite, $url)){$retour=true;break;}<br>
}<br>
return $retour;<br>
}<br><br><br><br>
Et puis j'ai un squelette spécifique pour browser:<br>
browse.php<br>
<?<br>
if
(!isset($requestedurl)){$requestedurl=<a class="moz-txt-link-rfc2396E" href="http://adresse.par.defaut.com">"http://adresse.par.defaut.com"</a>;};<br>
$url=parse_url($requestedurl);<br>
GetUrl($url[host],$url[path],$url[query],"",$page,$tete,"", "");<br><br>
$page= filtrehtml($page);<br>
$page = rewritelinks($page,
$PHP_SELF."?".eregi_replace("\&requestedurl.*", "",$argv[0]));<br>
?><br>
<div align="right"><a href="<? echo $requestedurl; ?>"
title="open" target="_blank"><font size="-3">Open this page in
a new frame</font> </a></div><br>
<?<br>
echo $page;<br>
<br>
?> <br><br><br>
Dans mes articles je met:<br>
<browse <a class="moz-txt-link-freetext" href="http://www.blablabla.fr">http://www.blablabla.fr</a> ><br><br>
et j'ai un filtre que j'applique systématiquement:<br>
function fl_browse($fl_txt){<br>
global $requestedurl;<br>
$fl_patern_in="|<browse([^>]*?)>|i";<br>
$fl_replace_in1="";<br>
if (preg_match($fl_patern_in, $fl_txt, $matches) ) {<br>
if (trim($matches[1])<>""){<br>
if (!isset($requestedurl)){<br>
$requestedurl=trim($matches[1]);<br>
}<br>
}<br>
$fl_txt = preg_replace($fl_patern_in, "$fl_replace_in1",
$fl_txt);<br>
//$rechercher="<browse>";<br>
//if (strstr($fl_txt,$rechercher)!==false){<br>
$GLOBALS['flbrowse']=true;<br>
//$fl_txt = str_replace($rechercher, "", $fl_txt);<br>
}<br>
return $fl_txt;<br>
}<br><br><br><br>
Et dans mes squelettes j'ai:<br>
<?<br>
if ($flbrowse){<br>
include("squelettes/browse.php");<br>
}<br>
?> <br><br>
Ouf... C'est un peu long je me rends compte !!!!<br><br>
En espérant que ça peut aider...<br>
Good luck<br><br>
Francois Bernier wrote:<br><blockquote type="cite" cite="midBCCFF248.AFE3%25frankybee <at> sympatico.ca">
Raphael a écrit le 18/05/04 14:41 :
<blockquote type="cite">
Bonjour,
j'aimerais transférer un site xeistant sur SPIP
il est-il possible de conserver mes pages déja fignolées en html et de les
faire apparaitre via un document de type html (document non joint mais
inséré) ?
cela reviendrai par exemple a afficher mon document dans un div de mon
squellete article ?
possible, pas possible, comment ?
Merci de vos suggestions
Raphaël
</blockquote>
Ne sachant pas si ça répond directement à ton besoin...
dans: espace privée > édition du site > articles
Tu as l'option "redirection" qui offre la possibilité de créer un article
virtuel pointant vers une page déjà existante (tes pages html). Cet article
sera référencée comme un "vrai" article dans ton site. Tu n'aurais pas
ainsi à imbriquer tout ton matériel existant dans des squelettes.
Tes pages restent cependant "statiques", non-modifiables par spip, seulement
par ftp. Elles ne seront pas non plus affichées selon le squelette
"article".
(Je ne sais pas si le moteur de recherche reconnait leur contenu? Quelqu'un
le sait-il?)
Francois
_______________________________________________
liste spip
<a class="moz-txt-link-abbreviated" href="mailto:spip <at> rezo.net">spip <at> rezo.net</a> - désabonnement : <a class="moz-txt-link-abbreviated" href="mailto:spip-off <at> rezo.net">spip-off <at> rezo.net</a>
Infos et archives : <a class="moz-txt-link-freetext" href="http://listes.rezo.net/mailman/listinfo/spip">http://listes.rezo.net/mailman/listinfo/spip</a>
Documentation de SPIP : <a class="moz-txt-link-freetext" href="http://www.spip.net/">http://www.spip.net/</a>
irc://irc.freenode.net/spip
</blockquote>
</div>
|
|
|