Qype-Teaser mit Template im Template
Verfasst: Do 29. Jul 2010, 17:47
Dieses Modul ruft über die Qype-API Daten für einen Eintrag ab. Da es sich um einen Teaser handelt werden aktuell lediglich ein zufälliger gekürzter Beitrag & die durchschnittliche Anzahl von Sternen
ausgegeben. Als Basis für weitere Abfragen sollte der folgende Code reichen.
In meinem aktuellen Projekt gibt es mehrere gleich aussehende Module in denen unterschiedliche Funktionen stecken; daher verschachtele ich außerdem 2 Templates.
ausgegeben. Als Basis für weitere Abfragen sollte der folgende Code reichen.
In meinem aktuellen Projekt gibt es mehrere gleich aussehende Module in denen unterschiedliche Funktionen stecken; daher verschachtele ich außerdem 2 Templates.
Code: Alles auswählen
<?php
# Variablen
$conf_TITLE = "Qype";//CMS_VALUE[0];
$conf_CSS_ID = "qype-box";//CMS_VALUE[1];
$conf_qId = "903354";//CMS_VALUE[2];
$conf_qKey = "INDIVIDUELL_ANFORDERN";//CMS_VALUE[3];
$conf_lang = "de";
$qSearch='http://api.qype.com/v1/places/'.$conf_qId.'/reviews/'.$conf_lang.'/?consumer_key='.$conf_qKey; //alle deutschen reviews abrufen
$qResult = simplexml_load_file($qSearch);
$qNumReviews = intval($qResult->total_entries); //Anzahl der Reviews
$qRevNum=rand(1,$qNumReviews); //Zufall
$usertext = $qResult->review[$qRevNum-1]->summary; //TesterText
$userlink = $qResult->review[$qRevNum-1]->link[1]->attributes()->href; //TesterTextLink
$userlink=str_replace("qype.co.uk","qype.com",$userlink); //Workaround
$res = $qResult->xpath("review/rating"); //Sterndurchschnitt errechnen
foreach($res as $boo){$sum+=$boo;}
$stars=ceil(intval($sum)/intval($qNumReviews));
/* Ausgabe generieren */
$usertext=preg_replace("/[^ ]*$/", '', substr($usertext, 0, 100)); //auf Wortende kürzen
$usertext='<a href="'.$userlink.'" title="ganzen Beitrag auf qype.com lesen" target="_blank">'.$usertext."...</a>";
$tplContent = new template();
$tplContainer = new template();
$tplContent->set("s", "TEXT",$usertext);
$tplContent->set("s", "STARS",intval($stars));
$content=$tplContent->generate($cfgClient[$client]["path"]["frontend"] . "templates/qype.html", true); //Ergebnis des Modulinhalts zwischenspeichern
$tplContainer->set("s", "TITLE", $conf_TITLE);
$tplContainer->set("s", "CSS_ID", $conf_CSS_ID);
$tplContainer->set("s", "CONTENT", $content);
$tplContainer->generate($cfgClient[$client]['tpl']['path'].'mContainer.html', false); //Element ausgeben
?>