TwitterReader per Ajax laden
Guten Tag!
Ich hatte das Problem, dass bei einer Seite mit viel Traffic das Frontendmodul der Erweiterung "TwitterReader" die Ladezeit der Seite auf ca. 16s verzögert hat (da die Twitter-Api recht langsam reagiert hat). Da keine Zeit für eine Überarbeitung der Erweiterung (Richtung Caching) bestand, musste ein Workaround her:
TwitterReader per Ajax nachladen
Schritt 1:
In den Einstellungen fügen wir bei den erlaubten Tag "<script>" hinzu. Diese Einstellung erlaubt nun in jedem HTML-Editor-Feld, auch Javascript einzufügen. Das ist nicht gut, wenn ein großer Benutzerkreis auch Zugriff auf das Backend hat!
Schritt 2:
Wir installieren über den Erweiterungkatalog die Erweiterung "Ajax"
Schritt 3:
Falls es noch nicht besteht: Ein neues Frontendmodul für den TwitterReader (Modultyp: "Twitternachrichten anzeigen"). Hier können wir uns auch gleich die ID des Frontendmoduls merken.
Schritt 4:
Wir legen ein weiteres Frontendmodul an (Typ: Eigener HTML-Code) mit folgendem Inhalt:
HTML-Code:
<div id="twitter_teaser_box">
<div id="tr_wait" style="padding-left:119px;padding-top:40px"
<img src="plugins/slimbox/css/loading.gif" alt="loading" /></div></div>
</div>
</div>
<script type="text/javascript">
<!--//--><![CDATA[//><!--
window.addEvent('domready', function() {
new Request.HTML({
'evalScripts':false,
'update':$('twitter_teaser_box'),
'onSuccess': function() {
// Ladeanzeige ausblenden
$('tr_wait').setStyle('display','none');
// Hier könnte z.B. auch ein Tickerscript gestartet werden.
}
}).get('/ajax.php?action=fmd&id=_id_&g=1'); // Hier muss die ID des Frontendmoduls eingetragen werden.
});
/*]]>*/-->
</script>
Wir müssen "_id_" im Ajax-Aufruf ('/ajax.php?...') noch durch die gemerkte ID ersetzen!
Schritt 5:
Jetzt müssen wir unser Frontendmodul aus Schritt 4 noch in das Seitenlayout einbinden. Natürlich sollten wir auch noch das Styling und das HTML-Template an unsere Wunschoptik anpassen.
Wenn jetzt die Seite aufgerufen wird, erscheint sie ohne lästige Verzögerung - lediglich das Twitter-Frontendmodul läd unter Umständen später nach.
Viel Spaß damit!
Carsten