Hallo JTL-Freunde,
Shopversion: 4.06 (Build: 11), PHP 5.6
Ich möchte das Händlerbund-Script in den Shop einbauen.
1. Ich habe lt. Anleitung im Child-Template die Datei functions.php angelegt.
2. Das Script in eine Smarty-Funktion gepackt.
3. Im Template eingebunden mit:
Bei
Kann es sein, dass Lesen & Schreiben in Dateien hier nicht zulässig ist? Oder ist meine Smarty-Funktion falsch?
PS: Ein zum Test eingefügtes
Hier das Script:
Danke
Tom
Shopversion: 4.06 (Build: 11), PHP 5.6
Ich möchte das Händlerbund-Script in den Shop einbauen.
1. Ich habe lt. Anleitung im Child-Template die Datei functions.php angelegt.
2. Das Script in eine Smarty-Funktion gepackt.
3. Im Template eingebunden mit:
{getKBewertungen()}
Bei
file_put_contents
oder file_get_contents
scheint Schluss zu sein. Es wird keine Datei erstellt. Es wird auch nicht in eine angelegt Test-Datei geschrieben oder daraus gelesen (tmp/IHRE_SHOP_ID.json). Dateiberechtigungen wurden beachtet.Kann es sein, dass Lesen & Schreiben in Dateien hier nicht zulässig ist? Oder ist meine Smarty-Funktion falsch?
PS: Ein zum Test eingefügtes
echo $output;
gibt die Daten der API korrekt aus. Im Shop-Root getestet funktioniert das Script. (ohne Smarty-Funktion)Hier das Script:
PHP:
$smarty->registerPlugin('function', 'getKBewertungen', 'getKBewertungen');
function getKBewertungen()
{
$shopId = 'IHRE_SHOP_ID';
$cacheFileName = 'tmp/' . $shopId . '.json';
$cacheTimeOut = 286400;
$apiUrl = 'http://service.kaeufersiegel.de/rating/' . $shopId;
$loadFromCache = true;
if (file_exists($cacheFileName) && time() - filemtime($cacheFileName) < $timeout) {
$loadFromCache = false;
}
if ($loadFromCache) {
$ch = curl_init();
// load fresh from API
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, false);
curl_setopt($ch, CURLOPT_URL, $apiUrl);
$output = curl_exec($ch);
curl_close($ch);
file_put_contents($cacheFileName, $output);
}
// echo $output; Test Ausgabe API > okay
$jsonObject = json_decode(file_get_contents($cacheFileName), true);
if ($jsonObject && $jsonObject['count'] > 0){
$rating = $jsonObject ['rating'];
$count = $jsonObject ['count'];
$url = $jsonObject ['url'];
$write = '<div itemprop="aggregateRating" itemscope="" itemtype="http://schema.org/AggregateRating">';
$write .= 'Der Shop wurde bei kaeufersiegel.de mit ';
$write .= '<span itemprop="ratingValue" content="' . $rating . '">' . $rating . '</span> von ';
$write .= '<span itemprop="bestRating" content="5">5</span> ';
$write .= 'Sternen bewertet - basierend auf <a href="' . $url . '"><span itemprop="ratingCount" content="' . $count . '">' . $count . '</span> Bewertungen</a></div>';
echo $write;
}
}
Danke
Tom