[TYPO3-german] gesucht: Viewhelper um Fluidvariablen in Inline-JavaScript einbauen zu können

Dr. Dieter Porth typo3 at mobger.de
Fri Feb 10 13:02:55 CET 2017


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


More information about the TYPO3-german mailing list