Hallo Stefan ,
danke für den Tipp.
Am 10.02.2017 um 10:16 schrieb Stefan Padberg:
Am 09.02.2017 um 09:59 schrieb Dieter Porth:
Liebe Liste,
Ich brauche zur Scopisierung von JavaScript-Funktionen in
TYPO3-Templates parametrisierten Inline-Code. Hier ein einfaches Beispiel:
.. $().ready( function () {
..... $('#{idOfHeadline}').css('color','{color}');
.. });
Leider mag TYPO3 solche Konstrukte überhaupt nicht.. Ich suche als
Work-Araound einen Viewhelper, der im JavaScript alle Fluid-Ausdrücke
interpretiert, wenn zum Berispiel die Fluid-Ausdrücke statt der Spitzzen
Klammern durch spitze Doppelklamern "«" und "»" eingeschlossen sind
Mein Wunschcode könnte gern zum Beispiel so aussehen.
.. <x:fluidbrackets start="«" end="»">
..... $().ready( function () {
....... $('#«idOfHeadline»').css('color','«color»');
..... });
.. </x:javascript>
Kennt jemand eine Extension, die ein solchen Viewhelper oder ähnlichen
schon verwendet, so dass ich mir den Programmieraufwand ersparen kann?
Habe ich eventuell im VHS/Fluid-Extension einen solchen Viewhelper
übersehen? Für Tipps bin ich dankbar.
Wenn es sich um eine eigene Extension handelt, habe ich es oftmals so
gelöst:
In das Extension-Template schreibe ich zuoberst
<script>
var color = {color}
</script>
Diese Javascript-Var kann ich dann im Extension-Javascript aufrufen.
Man muss natürlich aufpassen, wenn man mehrere Plugins der Extension auf
einer Seite einbauen will. Dann musss die Variable noch mit der Content
ID verknüpft werden, um es eindeutig zu machen.
Beste Grüße
Stefan
Der Work-Around bringt Nachteile mit sich, wenn man größere Datenmengen
übermitteln will. Aber auch hier gibt es natürlich Möglichkeiten zum
Work-Around.
Ich verfolge beim Templating-Programmieren immer den Grundsatz, dass
jeder View (Template/Partial) immer eigenständig - also unabhängig vom
Rest der Seite – existieren, definieren und interagieren können muss.
Unter diesem Paradigma ist es zur Erhöhung der Transparenz des Codes
manchmal sinnvoll, wenn man direkt im Template einen parametrisierten
Funktionsaufruf von javaScript ausführt, statt ihn in eine externe
JavaScript-Datei auszulagern.
Für die HTML-JavaScript-Trennungs-Puristen in der Leserschaft sei neben
den Funktionstest ein weiteres Beispiel für sinnvollen
JavaScript-Einsatz im HTML genannt.
Um ein Kontaktformular schnell zu machen, sollen die Eingaben per
JavaScript validiert werden. Die Fehlerhinweise zu den einzelnen
Feldern könnte man natürlich jeweils als Data-Attribute bei den
Input-Feldes hinterlegen. Man könnte sie aber auch direct als
Javascript-Objekt an die Validierungsfunktion übergeben, um so unnötige
data-Abfragen zu vermeiden und um so den JavaScript-Code schlank zu
halten. Mit dem obigen Workaround, der für kleine datenmengen durchaus
gut funktioniert, würde es schnell unübersichtlich werden.
Ich glaube, ich werde langfristig um den viewhelper 'fluidbracket' zum
modifizierten Rendern von JavaScript nicht herumkommen und ihn wohl
selbst programmieren müssen. *schade*
Mit besten Grüßen
Dieter
_______________________________________________
TYPO3-german mailing list
TYPO3-german@lists.typo3.org
http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german