Zum Inhalt springen

Benötige Zähler, der als Wert in Attribut geschrieben wird

Erstellt am 23. Juli 2015 · 11 Antworten · letzte Antwort am 11. August 2015

Tags: Frage

mimii ·

Danke schon mal für die Antworten,

das werde ich mal so probieren. Die Frage ist jetzt nur noch, wie krieg ich den Wert ins Atribut data-to="hier muss dann der berechnete Wert rein"? Mein CE ist ja ein einfaches HTML Element. Hier kann ich ja keine Variable rein setzen, oder?
z.B. so

...
<h2 class="timer count-title" id="count-number" data-to="Variable" data-speed="2000"></h2>
...

Danke euch schonmal und Gruß
mimii

toifel ·

Wenn du so oder so mit JavaScript/jQuery arbeitest, dann kannst du das TypoScript Objekt zuerst irgendwo in einen Marker rendern und dann erst im JavaScript darauf zugreifen.

Sauberer wäre es mit einem eigenen Frontend-Plugin.

mimii ·

Hallo,

ich kämpfe immer noch und möchte das Ganze mit der Rechnerei nun komplett auf TS aufbauen. Dazu habe ich mir die Erweiterung typoscript2ce installiert und hole mir nun die lib.counter ins Content-Element. Das funktioniert soweit. Auch das Berechnen der Tassen Kaffee klappt.

Nun müsste jedoch das JQuery auf die Daten zugreifen, um sie zu animieren. D.h ich muss den berechneten Wert ins Atribut "data-to" eintragen, dass es dann so aussieht:

<p id="count-number" class="timer count-title" data-speed="4000" data-to="hier muss der Wert rein"></p>

Wie baue ich das ins TS? Das habe ich bisher, aber das gibt mir nur die Zahl aus, ohne was drumherum

lib.counter = COA
lib.counter {
  ...
  20 = COA
  20 {
    10 = TEXT
    10.value (
      <i class="fa fa-coffee fa-2x"></i>
    )
    20 = TEXT
    20 {
      current = 1
      setCurrent.data = date:U
      setCurrent.wrap = ((| - 1388534400) / 86400) * 2
      prioriCalc = intval
    }
    30 = TEXT
    30.value (
      <p class="count-text">Tassen Kaffe</p>
    )	
    wrap = <div class="counter col span_3">|</div>
  }
  ...
}

Vielen Dank für Eure Hilfe und Gruß
mimii

mimii ·

Japp, an sowas dachte ich auch ;-)

Nur es geht nicht so, wie ich es mir dachte.

Weder so

    20 = TEXT
    20 {
      current = 1
      setCurrent.data = date:U
      setCurrent.wrap = <p id="count-number" class="timer count-title" data-speed="4000" data-to="((| - 1388534400) / 86400) * 2"></p>
      prioriCalc = intval
    }
    20 = TEXT
    20 {
      current = 1
      setCurrent.data = date:U
      setCurrent.wrap = ((| - 1388534400) / 86400) * 2">
      prioriCalc = intval
      wrap = <p id="count-number" class="timer count-title" data-speed="4000" data-to="|"></p>
    }

funktioniert es. Dann wird immer 0 angezeigt. Ich geh mal davon aus, dass meine ungeschickten Versuche den wrap drumherum zu bauen recht peinlich sind. Ich krieg den Wert partout nicht ins Attribut :-(

Viele Grüße
mimii

Chrissli ·

Probier's mal so:

20 = TEXT
20 {
    stdWrap {
        current = 1
        setCurrent.data = date:U
        setCurrent.wrap = ((| - 1388534400) / 86400) * 2">
        prioriCalc = intval
    }
    wrap = <p id="count-number" class="timer count-title" data-speed="4000" data-to="|"></p>
}
mimii ·

:-)))))

Tausend Dank !!!

Was macht das stdWrap dadrum jetzt genau? Nur für mein Verständnis und den Lerneffekt :-)

Und weil ich jetzt übermütig werde, sollte der Wert (im Beispiel "475") noch im <p> innerhalb eines <span> stehen, damit auch der Besucher mit deaktiviertem Javascript was zu sehen kriegt. Im HTML einfach so:

<p id="count-number" class="timer count-title" data-speed="1000" data-to="475">
  <span class="wert"> 475</span>
</p>

Also folgendes hätte ich gern, geht so aber nicht.

...
  20 = TEXT
  20 {
    stdWrap {
      current = 1
      setCurrent.data = date:U
      setCurrent.wrap = ((| - 1441929600) / 86400 * -1)
      prioriCalc = intval
    }
    wrap = <p id="count-number" class="timer count-title" data-speed="1000" data-to="|"><span class="zahl">|</span></p>
  }
...

Auch dieser Verucht scheitert:

...

  20 {
  stdWrap {
    current = 1
    setCurrent.data = date:U
    setCurrent.wrap = ((| - 1388534400) / 86400) * 2
    prioriCalc = intval
  }
  10 = COA
  10 {
    10 = TEXT
    10.wrap = <p id="count-number" class="timer count-title" data-speed="4000" data-to="|">
    20 = TEXT
    20.wrap = <span class="zahl">|</span></p>
  }
...

Viele Grüße
mimii

Chrissli ·

Was macht das stdWrap dadrum jetzt genau? Nur für mein Verständnis und den Lerneffekt :-)

Also ich habe mir das so gemerkt:
stdWrap ist so eine Art Multifunktionsklasse. Die meisten Typo3 Container bieten teilweise oder sogar vollständige stdWrap-Funktionen. stdWrap hat aber selbst stdWrap, d.h. kann mehrfach verschachtelt werden. Das ist insbesondere dann wichtig, wenn wie in deinem Fall die Ausführungsreihenfolge der stdWrap-internen Funktionen in die Quere kommt, dann können diese Teile über das untergeordnete stdWrap vorausgewertet werden. So in etwa halt...

Chrissli ·

Was macht das stdWrap dadrum jetzt genau? Nur für mein Verständnis und den Lerneffekt :-)

Also ich habe mir das so gemerkt:
stdWrap ist so eine Art Multifunktionsklasse. Die meisten Typo3 Container bieten teilweise oder sogar vollständige stdWrap-Funktionen. stdWrap hat aber selbst stdWrap, d.h. kann mehrfach verschachtelt werden. Das ist insbesondere dann wichtig, wenn wie in deinem Fall die Ausführungsreihenfolge der stdWrap-internen Funktionen in die Quere kommt, dann können diese Teile über das untergeordnete stdWrap vorausgewertet werden. So in etwa halt...