Javascript Probleme in der easyLink Template Klasse umgehen

Einige von Euch, die die Webkatalog Software easyLink 2.x von Mountaingrafix benutzen, werden wahrscheinlich auch schon auf dieses Phänomen gestoßen sein. Aufwendigere Javascript Funktionen direkt in ein easyLink Template zu integrieren, wirft oftmals Fehler beim Aufruf der Templates im Live-Betrieb auf.

Wieso gibt es diese Fehler?

Die Ursache für dieses Problem ist einfach erklärt. Die PHP Template Klasse der easyLink Versionen 2.x (und auch einige ältere Versionen 1.x) erwartet in den Templates nach geschweiften Klammern immer eine PHP Funktion oder PHP Variablen, die durch die Template Klasse interpretiert werden sollen. Wird nun eine Javascript Funktion direkt in ein Template geschrieben, kann es unter Umständen sein, dass die innerhalb dieser Javascript Funktion angeführten geschweiften Klammern zu Problemen führen, da die Template Klasse versucht etwas zu interpretieren, was eigentlich gar nicht interpretiert werden soll.

Lösungsansätze

Grundsätzlich gibt es zwei Lösungen für dieses Problem. Die einfachste Möglichkeit einen parse_error durch die Template Klasse zu umgehen, wären ausgelagerte Javascript funktionen in einer gesonderten Datei.

Beispiel: Javascript in separaten Dateien

Die zweite Möglichkeit besteht darin hinter öffnenden geschweiften Klammern einfach einen Zeilenumbruch zu veranlassen. Ebenso sollte vor und nach Doppelpunkten ein Leerzeichen eingefügt werden.

Problem:

Effect.Appear('id_of_element', { duration: 3.0 });

Lösung:

Effect.Appear('id_of_element', {
        duration : 3.0
});

Dieses Beispiel basiert auf dem Scriptaculous Framework.

Das oben gezeigte Beispiel ermöglicht es komplexere Funktionen auch innerhalb der Templates zu realisieren. Es bleibt aber nach wie vor unmöglich umfassender Javascript Konstrukte innerhalb von Event-Handlern darzustellen.

2 Gedanken zu „Javascript Probleme in der easyLink Template Klasse umgehen“

  1. Na das ist doch mal ein sinnvoller Beitrag, der sicherlich vielen Nutzern weiterhelfen dürfte. Ich persönlich lagere komplexe JS eigentlich immer aus, obwohl die 2. Variante natürlich viel schneller zu realisieren ist.

    Bei easyLink V3 können die JS im übrigen problemlos im Template genutzt werden, da wir hier eine geänderte Template-Engine einsetzen.

    Antworten

Kommentar verfassen

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.