Jak na reklamní formát XML od Invie

17 Srpen, 2007 | PHP, Tutorial | 991 zobrazení |

Invia 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:
   
Kanárské ostrovy, Gran CanariaGloria Palace San Agustín ****
Kanárské ostrovy - Gran Canaria
All Inclusive
30.08 - 06.09. 2008
19490 Kč
 
Kanárské ostrovy, Gran CanariaGloria Palace Amadores****
Kanárské ostrovy - Gran Canaria
All Inclusive
11.10 - 18.10. 2008
19490 Kč
 
Kanárské ostrovy, Gran CanariaIFA Faro Maspalomas ****
Kanárské ostrovy - Gran Canaria
Snídaně
13.09 - 20.09. 2008
21990 Kč
 
Kanárské ostrovy, Gran CanariaBeverly Park***
Kanárské ostrovy - Gran Canaria
All Inclusive
06.09 - 13.09. 2008
16490 Kč
 
Kanárské ostrovy, LanzaroteCorbeta **+
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%">&nbsp;</td>
    <td width="76%">&nbsp;</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>&nbsp;</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:  •  •  •  • 


  1. 1 komentář k “Jak na reklamní formát XML od Invie”

  2. 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


Komentáře k příspěvku