Zufällige Schriftart im Menü

  • meierz meierz
    TYPO3-Anwärter
    0 x
    4 Beiträge
    0 Hilfreiche Beiträge
    15. 08. 2010, 22:55

    Hallo zusammen,

    ich bin der Neue und noch blutiger Anfänger. :- ) Ich habe jetzt meine ersten 3-4 Seiten fertig und versuch mich jetzt in verschiedenem Neuen. Ich möchte aktuell versuchen die Schriftart im Menü dynamisch / zufällig zu wechseln. Zum Thema Zufallszahl gibt es ja nun nicht soviel und deshalb habe ich mir einen kleinen Workarround gebaut.

    Meine Idee ist folgende: Ich habe eine Seite erstellt die als Content die Schriften enthält die verwendet werden sollen. Warum: Hier kann ich Rand() anwenden.
    Inhalt 1: fileadmin/templates/fonts/jellyka_estrya_handwriting.ttf
    Inhalt 2: fileadmin/templates/fonts/kingthings_spike_regular.ttf

    Mein Script dazu sieht wie folgt aus:

    1. ## RANDOM
    2. temp.random = TEXT
    3. temp.random.data {
    4. table = tt_content
    5. wrap= |
    6. pidInList = 45
    7. selectFields = header
    8. where = colPos = 0
    9. language = sys_language_id
    10. orderBy = rand()
    11. max = 1
    12. }
    13. renderObj=COA
    14. renderObj{
    15. 5=TEXT
    16. 5{
    17. wrap = |
    18. field = header
    19. }
    20. }
    21. }

    Ich denke ich brauche das nicht weiter erklären. Das Script holt sich entweder die eine oder die andere Schriftart. Nicht lachen, ich bin Anfänger ;-)

    Mein Menü wird danach wie folgt erstellt:

    1. ## HAUPTNAVIGATION
    2. page.10.subparts.NAVIGATION_OBEN = HMENU
    3. page.10.subparts.NAVIGATION_OBEN {
    4. special = directory
    5. special.value = 2
    6. 1 = GMENU
    7. 1.wrap = <ul>|</ul>
    8. 1.NO = 1
    9. 1.NO {
    10. XY = [10.w]+10,55
    11. align = left
    12. wrap = <li class="menu">|</li>
    13. #Beschriftung als Text rendern
    14. 10 = TEXT
    15. 10 {
    16. text.field = title
    17. fontColor = #2d0f00
    18. fontSize = 64
    19. antiAlias = 1
    20. align = left
    21. spacing = 5
    22. offset = 0,54
    23. }
    24. 10.fontfile < temp.random
    25. }
    26. 1.RO < .1.NO
    27. 1.RO = 1
    28. 1.RO.10.fontColor = #000
    29.  
    30. 1.CUR < .1.NO
    31. 1.CUR = 1
    32. 1.CUR.10.fontColor = #872e00
    33. }

    Leider funktioniert es nicht. Ich denke ich mache hier einen grundsätzlichen Denkfehler, leider komme ich nicht drauf. Würde mich freuen wenn sich jemand erbarmt. : )

    Vielen Dank!


  • 1
  • jenses jenses
    Flash Gordon
    0 x
    3087 Beiträge
    106 Hilfreiche Beiträge
    16. 08. 2010, 08:08

    Es muß auf jeden Fall schon mal fontFile heißen, nicht fontfile...

  • meierz meierz
    TYPO3-Anwärter
    0 x
    4 Beiträge
    0 Hilfreiche Beiträge
    16. 08. 2010, 08:47

    Hallo,

    vielen Dank, darans lags allerdings nicht. Vielleicht sollte ich noch erwähnen dass wenn ich "temp.random.data" ausgehen, er mir das korrekte Ergebnis zeigt. Ich kann es auch per copy/paste fest hinter fontFile in Script schreiben. Nur der automatische Weg geht eben leider nicht.

    Viele Grüße

  • Michaelh74 Michaelh7...
    Jedi-General
    0 x
    1519 Beiträge
    0 Hilfreiche Beiträge
    16. 08. 2010, 10:29

    Funktioniert denn dies Ausgabe richtig ohne dieses ganze Rand-Gedöhns?

    Da fast jeder Schrift trotz gleicher PX unterschriedlich groß ist, wird das so oder so sicher ein schwieriges Unterfangen und abgesehen von Spieltrieb völlig sinnfrei (nur meine Meinung und nicht böse gemeint).

    Gruß
    Michael

  • meierz meierz
    TYPO3-Anwärter
    0 x
    4 Beiträge
    0 Hilfreiche Beiträge
    16. 08. 2010, 10:57

    Ein unlösbares Problem nach dem Anderen ;)
    Dafür würde ich dann im Datensatz, in einem noch nicht definierten Feld, die Schriftgrösse noch mitgeben.

    Mich macht das echt Irre, aber ich bekomms einfach nicht zu laufen.

  • sunixzs sunixzs
    R2-D2
    0 x
    123 Beiträge
    2 Hilfreiche Beiträge
    16. 08. 2010, 17:27

    Hallo,

    ich glaube die Zuweisung "fontFile < temp.random" geht nicht so einfach.

    "temp.random" ist erstmal "TEXT" und nicht das Ergebnis des Ganzen. Oder anders: "fontFile" müsste auch eine "data"-Anweisung besitzen - "fontFile" müsste auch irgendwie ein contentType sein wie TEXT, COA, IMAGE usw.

    TypoScript ist leider nicht ganz wie eine Programmiersprache zu verstehen - eher wie eine Beschreibungssprache oder Zuweisungssprache.

    Wenn man etwas mit "<" zuweist, dann ist das so zu sehen, als ob man alles, was man vorher definiert hatte auch direkt "reinschreiben" könnte. In diesem Sinne gibt es keine Variablen. Evtl. könnten man was mit Konstanten mache (Eine Konstante definieren "foo = bar" - diese könnte man irgendwo zuweisen "fontFile = {$foo})?

    Beispiel Zuweisung:
    [ts]foo = TEXT
    foo.value = bar
    page.10.marks.FOO < foo

    # Ist das gleiche wie
    page.10.marks.FOO = TEXT
    page.10.marks.FOO.value = bar
    [/ts]
    (Es ist nicht das Selbe... bei ersterem wird die Methode "TEXT" zweimal aufgerufen - bei zweiterem nur einmal.)

    Ich bin auf eine Lösung gespannt.

    LG sunixzs

  • meierz meierz
    TYPO3-Anwärter
    0 x
    4 Beiträge
    0 Hilfreiche Beiträge
    18. 08. 2010, 12:17

    Schade das keiner eine Lösung hat, eventuell ist es auch keine Anfängerfrage und muss verschoben werden?

    Ich bin leider noch nicht weiter gekommen mit dem Problem.

  • sunixzs sunixzs
    R2-D2
    0 x
    123 Beiträge
    2 Hilfreiche Beiträge
    18. 08. 2010, 13:06

    Ein anderer Ansatz: Du verfrachtest das Ganze in eine Extension.

    Per Extension "Kickstarter" eine eigene Extension mit Frontend-Plugin erstellen.

    In der Extension im Setup das TS definieren (in etwa):
    [ts]plugin.tx_key_pi1.menu = HMENU
    plugin.tx_key_pi1.menu {
    special = directory
    special.value = 2
    1 = GMENU
    1.wrap = <ul>|</ul>
    1.NO = 1
    1.NO {
    XY = [10.w]+10,55
    align = left
    wrap = <li class="menu">|</li>
    #Beschriftung als Text rendern
    10 = TEXT
    10 {
    text.field = title
    fontColor = #2d0f00
    fontSize = 64
    antiAlias = 1
    align = left
    spacing = 5
    offset = 0,54
    }
    10.fontfile < temp.random
    }
    1.RO < .1.NO
    1.RO = 1
    1.RO.10.fontColor = #000

    1.CUR < .1.NO
    1.CUR = 1
    1.CUR.10.fontColor = #872e00
    }
    [/ts]

    Dann in der Extensionklasse die Konfiguration holen, den Random-Wert holen und im Konfigurationsarray setzen. Das Ganze dann rendern lassen durch das cObj und ausgeben:

    1. $randomFont = irgendwieRandomFontBekommen();
    2. $menuConfig = $this->conf['menu'];
    3. $menuConfig['1.']['no.']['10.']['fontFile'] = $randomFont;
    4. return $this->cObj->HMENU($menuConfig);

    Anschließen das Plugin im Marker ausgeben:
    [ts]page.10.marks.MEINE_NAVI < plugin.tx_key_pi1[/ts]

    Edith sagt: In den Scriptfeldern sind einige Fehler drin. Es soll auch nur das Prinzip verdeutlichen.

  • 1