Footer
Die Footer-Syntax wird über den folgenden Link mit einem Data-Attribut mit Zeitstempel zur Verfügung gestellt. Ziel ist es, auch bei aktuellen redaktionellen Änderungen einen GESIS-weit einheitlichen Stand zu gewährleisten, gerade weil dieser Prozess nicht Teil einer Entwicklungspipeline ist. Das Styling erfolgt über die gesis-web.css aus dem Webpack.
Wichtig ist es die Sÿntax im eignen Sÿstem zu cachen und regelmäßig durch entsprechende technische Umsetzung mit dem eigenen System auf den aktuellen Stand zu prüfen.
Syntax für den Footer öffnenPHP Cache Beispiel
Hier ein Beispiel, wie ein PHP-gesteuertes Caching aufgebaut sein kann. Die genaue Umsetzung hängt vom eigenen System ab.
<?php
$url = "https://www.gesis.org/api/footer";
$cacheFile = __DIR__ . '/cache/footer.html';
// Stelle sicher, dass der Cache-Ordner existiert
if (!is_dir(__DIR__ . '/cache')) {
mkdir(__DIR__ . '/cache', 0777, true);
}
// cURL initialisieren
$ch = curl_init($url);
// Falls ein Cache existiert, hole den Zeitpunkt der letzten Cache-Aktualisierung
if (file_exists($cacheFile)) {
// Nutze filemtime, um das Datum der letzten Cache-Aktualisierung zu erhalten
$lastModified = filemtime($cacheFile);
// Formatierung nach RFC 1123 für den If-Modified-Since Header
$ifModifiedSince = gmdate('D, d M Y H:i:s', $lastModified) . ' GMT';
curl_setopt($ch, CURLOPT_HTTPHEADER, array("If-Modified-Since: $ifModifiedSince"));
}
// cURL-Optionen setzen
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, true); // Damit wir auch die HTTP-Header erhalten
$response = curl_exec($ch);
// HTTP-Statuscode und Header-Größe ermitteln
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$headerSize = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
curl_close($ch);
// Die Header und den Body trennen
$headers = substr($response, 0, $headerSize);
$body = substr($response, $headerSize);
if ($httpCode == 304 && file_exists($cacheFile)) {
// Kein Update: Verwende den lokal gecachten Footer
$html = file_get_contents($cacheFile);
} else {
// Neues Update: Speichere den aktuellen Body im Cache
$html = $body;
file_put_contents($cacheFile, $html);
}
// HTML parsen und den data-updated Zeitstempel auslesen
libxml_use_internal_errors(true);
$dom = new DOMDocument();
$dom->loadHTML($html);
libxml_clear_errors();
$xpath = new DOMXPath($dom);
// Hier wird einfach das erste <footer> Element gesucht, ohne nach einer spezifischen Klasse zu filtern
$footerNodes = $xpath->query("//footer");
if ($footerNodes->length > 0) {
$footer = $footerNodes->item(0);
$lastUpdated = $footer->getAttribute("data-updated");
echo "Footer zuletzt aktualisiert am: " . htmlspecialchars($lastUpdated);
} else {
echo "Footer nicht gefunden.";
}
?>