Načítání recenzí z heureky

Pokud chcete na eshop načítat recenze obchodu z heureky, můžete použít mnou vytvořený skript, který se o vše postará. Součástí jsou také obrázky hvězdiček a css soubor pro zobrazení na stránkách.

Celé to funguje tak, že se nejprve stáhne XML soubor z heureky (je zapotřebí nejprve nastavit v souboru heureka-recenze.php URL), ten se celý projde a rozparsuje, a následně se data uloží do textových souborů. Můžete si to vše upravit, aby se to nahrávalo do databáze. Pro každý rok se vytváří jeden textový soubor, ten pak stačí includovat do stránky.

Načítání se spouští přes soubor heureka-recenze.php, doporučuji dát do cronu jednou denně. Adresáři heureka_recenze nastavte právo zápisu (777). A tady je to celé ke stažení.

Načtení kategorií z heureky

Pokud chcete úspěšný eshop, budete pravděpodobně párovat u zboží kategorie s heurekou. K tomu potřebujete ideálně do databáze dostat všechny heureka kategorie, a následně je buď u kategorií nebo u zboží spárovat. Budu se nyní zabývat tím, jak dostat celý strom kategorií na lokální server do databáze.

V databázi předpokládám tabulku s názvem heureka_kategorie a s jediným sloupcem pojmenovaným nazev. Níže uvedený kód načte všechny kategorie heureky a uloží je do dočasného XML souboru na disku. Následně tento soubor zpracuje a všechny kategorie uloží do databáze, přičemž je ukládá jako textový řetězec včetně celé cesty, tzn. názvy kategorií odděleny oddělovačem |.

$file="http://www.heureka.cz/direct/xml-export/shops/heureka-sekce.xml";
$ch = curl_init($file);
$fp = @fopen("tmp/heureka.xml", "w");
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
curl_close($ch);
fclose($fp);

function vetev($PARENT) {
  global $dbh;
  if (isset($PARENT->CATEGORY)) {
    foreach($PARENT->CATEGORY as $CHILD) {
      $CATEGORY_FULLNAME = isset($CHILD->CATEGORY_FULLNAME) ? $CHILD->CATEGORY_FULLNAME : "";
      $CATEGORY_FULLNAME = trim(str_replace("Heureka.cz |", "", $CATEGORY_FULLNAME));
      if ($CATEGORY_FULLNAME) $dbh->query("insert into heureka_kategorie (nazev) values ('".$CATEGORY_FULLNAME."')");
      vetev($CHILD);	
    }
  }
}

if (file_exists("tmp/heureka.xml")) {

$xml = file_get_contents("tmp/heureka.xml");
$HEUREKA = new SimpleXMLElement($xml);

try {
  $dbh = new PDO("mysql:host=localhost;dbname=nazevdatabaze;charset=utf8",'jmeno','heslo');
  $dbh->query("truncate table heureka_kategorie");
  vetev($HEUREKA);
  $dbh = null;
} catch (PDOException $e) {
    echo "Error!: " . $e->getMessage() . "<br/>";
    exit();
}

}