Jak na reklamní formát XML od Invie
17 Srpen, 2007 | PHP, Tutorial | 991 zobrazení |
Pokud používáte affil od Invie a nevíte jak přejít na XML pak zde najdete postup, jak integrovat reklamu na svoje stránky. Ukázku použití najdete zde: http://www.dosveta.info/zajezdy.php
Invia zveřejnila na svých stránkách povídání a i odkaz na stránky kryl.info, kde je PHP kód pro práci s XML souborem, bohužel pracuje s funkcí fopen(), která je na většině webů zakázaná, včetně mého hostingu, proto jsem zbalastil jednoduchý skript / PHP guru prominou, ale je pátek a víc jak 30 minut jsem tomu nechtěl věnovat /.
Ukázka integrace XML:
![]() | Gloria Palace San Agustín ****
Kanárské ostrovy - Gran Canaria All Inclusive 30.08 - 06.09. 2008 19490 Kč |
![]() | Gloria Palace Amadores****
Kanárské ostrovy - Gran Canaria All Inclusive 11.10 - 18.10. 2008 19490 Kč |
![]() | IFA Faro Maspalomas ****
Kanárské ostrovy - Gran Canaria Snídaně 13.09 - 20.09. 2008 21990 Kč |
![]() | Beverly Park***
Kanárské ostrovy - Gran Canaria All Inclusive 06.09 - 13.09. 2008 16490 Kč |
![]() | Corbeta **+
Kanárské ostrovy - Lanzarote Polopenze 28.08 - 04.09. 2008 12990 Kč |
Zdrojový kód skriptu
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>INVIA - nacitani XML</title>
</head>
<body>
<?
function TextBetween($s1,$s2,$s){
$s1 = strtolower($s1);
$s2 = strtolower($s2);
$L1 = strlen($s1);
$scheck = strtolower($s);
if($L1>0){$pos1 = strpos($scheck,$s1);} else {$pos1=0;}
if($pos1 !== false){
if($s2 == '') return substr($s,$pos1+$L1);
$pos2 = strpos(substr($scheck,$pos1+$L1),$s2);
if($pos2!==false) return substr($s,$pos1+$L1,$pos2);
}
return '';
}
/*
-----------------------------------
Cache XML ze serveru INVIA - platnost 1 den
zadejte plnou cestu k adresari, kde se bude ukladat XML
na adresari musi byt pravo zapisu chmod 777
pro Windows zadavejte napr. c:\\adresar\\cache
-----------------------------------
*/
$uloz_nabidku = "";
$datum = date ("d");
if (file_exists("cache/invia_kanary_$datum.html")){
$soubor = "cache/invia_kanary_$datum.html";
$fp = fopen($soubor, "r");
$obsah = fread($fp, FileSize($soubor));
fclose($fp);
}else{
/*
-----------------------------------
Pokud neni ulozen v cache
Nacist XML ze serveru INVIA
pod $zurl zadejte plny odkaz z vaseho affil uctu pri generovani reklamy
-----------------------------------
*/
$zurl = "http://banner.invia.cz/ikomunity/affil/........";
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL, $zurl);
curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION,0);
curl_setopt($ch, CURLOPT_HEADER,0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
$obsah = curl_exec($ch);
curl_close($ch);
}
/*
-----------------------------------
Vystupy a zpracovani
-----------------------------------
*/
?>
<table width="75%" border="0" cellspacing="0" cellpadding="2" bgcolor="#D7EBFF">
<tr>
<td width="24%"> </td>
<td width="76%"> </td>
</tr>
<?
//5 poslednich zprav:
$pocet = 1;
while ($pocet <= 5){
$nabidka = TextBetween("<offer>", "</offer>", $obsah);
// rozebrani nabidky mezi tagy <offer> </offer>
$fotka = TextBetween("<image", "</image>", $nabidka);
$fotka = str_replace(">", " src=\"", $fotka);
$fotka = "<img " . $fotka ."\" border=\"0\"/>";
$zeme = TextBetween("<country>", "</country>", $nabidka);
$lokalita = TextBetween("<locality>", "</locality>", $nabidka);
$hotel = TextBetween("<hotel>", "</hotel>", $nabidka);
$od = TextBetween("<from>", "</from>", $nabidka);
$od = substr($od, 8, 2) . "." . substr($od, 5, 2);
$do = TextBetween("<to>", "</to>", $nabidka);
$do = substr($do, 8, 2) . "." . substr($do, 5, 2) . ". " . substr($do, 0, 4) ;
$cena = TextBetween("<price currency=", "</price>", $nabidka);
$cena = str_replace("\"CZK\">", "", $cena);
$cena .= " Kč";
$jidlo = TextBetween("<food>", "</food>", $nabidka);
$odkaz = TextBetween("<url>", "</url>", $nabidka);
// ulozeni pro cache
$uloz_nabidku .= "<offer>" . $nabidka ."</offer>";
// odstraneni
$obsah = str_replace(substr("$obsah", 0, strpos($obsah, "</offer>")+strlen("</offer>")), "", $obsah);
/*
-----------------------------------
FORMATOVANY vystup
zde editujte
-----------------------------------
*/
echo "<tr><td width=\"24%\"><a href=\"". $odkaz ."\">". $fotka . "</a></td>";
echo "<td width=\"76%\"><strong><a href=\"". $odkaz ."\">". $hotel ."</a></strong>\n";
echo "<br />\n";
echo $zeme . " - " . $lokalita;
echo "<br />\n";
echo "<em>". $jidlo ."</em>";
echo "<br />\n";
echo $od . " - " . $do;
echo "<br />\n";
echo $cena;
echo "</td></tr>\n";
echo "<tr><td> </td></tr>\n";
$pocet++;
}
/*
-----------------------------------
Zapis do cache
zadejte plnou cestu k adresari, kde se bude ukladat XML
na adresari musi byt pravo zapisu chmod 777
pro Windows zadavejte napr. c:\\adresar\\cache
-----------------------------------
*/
if (file_exists("cache/invia_kanary_$datum.html")){
}else{
$soubor = fopen("cache/invia_kanary_$datum.html", "w+");
fwrite($soubor, $uloz_nabidku);
fclose($soubor);
}
?>
</table>
</body>
</html>
Zobrazit zdrojový kód v novém okně
Klíčová slova: affil • invia • php • Tutorial • xml







1 komentář k “Jak na reklamní formát XML od Invie”
Jen doplnim, ze skript NEPOUZIVA fopen() ale fsockopen() a ten by mel byt na hostingu povolen :) Vetsinou je prave zakazano otvirani pres fopen(externi_url).
Spis nebudes mit na hostingu povolene CURL (ac i to se muze objevit).
To jen upresneni informaci ;)
Napsal: Milan Kryl dne 29 Leden, 2008