[HowTo] Schriftgrößen mit CSS und TYPO3 wählen

Autor Nachricht
Verfasst am: 30.11.2006 [11:30]
Kitsunet


[Themenersteller]
dabei seit: 02.02.2006
Beiträge: 1583

Hallo,

mal ein kleines Tutorial zum Thema Schriftgrößenauswahl seitenübergreifend mit TYPO3.

Zuerst muss ich dazu einen kleinen Exkurs in CSS und relative Schriftgrößen machen. Falls Ihr eure Schriftgröße bereits mit em einstellt könnt ihr ein Stück überspringen. Allen anderen rate ich zusätzlich zu diesem Thema zu googlen, weil das ein HowTo für sich wäre.
Um die Schriftgrößen über den Browser steuerbar zu machen gibt man die Schriftgrößen in seinem CSS am besten mit der relativen Einheit em an. Aber wie groß ist 1em? Nun, ganz sicher kann man es nicht vorhersagen, aber bei den meisten Browsern ist die Standardschriftgröße 16 Pixel, damit ist 1em auch 16Pixel. Will ich nun z.B. 8 Pixel müsste ich 0.5em nehmen (es wird also die Standardschriftgröße mit meiner em-Angabe multipliziert).
Da mir 16Pixel meist zu groß ist, und ich nicht ständig die Schriftgröße angeben will, setze ich die Standardgröße meist niedriger an. Das kann ich machen, indem ich in meinem CSS für den body-Tag (dessen einstellungen an alles vererbt werden) Die Schriftgröße verstelle. Ich mache es mit Prozent, aber man kann da auch direkt em nehmen, wenn man will.
Das sieht dann in meiner CSS Datei z.B. so aus:

body{
font-size: 62.5%;

}

Das ergibt eine Standardschriftgröße von 10Pixel, so dass jetzt 1em = 10Pixel sind.
Das dazu, alles weitere bitte ergooglen.

Um jetzt verschiedene Größen anzubieten, muss ich nur noch diese Angabe ändern, weil ja alle anderen Schriftgrößen auf die Standardschrift bezogen werden. D.h.
body{
font-size: 80%;
}
ergibt im ganzen Dokument eine größere Schrift. Nun könnte man das über Javascript machen, sogar Stufenlos. Das funktioniert aber natürlich nur, wenn Javascript eingeschaltet ist und wird in der Regel wenn man die Seite wechselt wieder zurückgesetzt.
Das kann man umgehen indem man das über TYPO3 mit einer GET-Variablen löst.

Dazu müssen wir erstmal die GET-Variable einrichten:

config.linkVars = Fsize,L # Falls ihr keine mehrsprachige Seite habt, könnt Ihr das L weglassen. Eure Variable heißt jetzt Fsize (könnt ihr auch anders machen)

Jetzt brauchen wir ein Menü um zwischen den Größen umzuschalten. Das könnte man sicher eleganter Lösen, ich poste jetzt mal ein Beispiel mit drei verschiedenen Schriftgrößen:

Typoscript:Zeilennummerierung:  An / Aus

  1. temp.fsizemenu = COA
  2. temp.fsizemenu.wrap = <ul class="langmenu">|</ul>
  3. temp.fsizemenu.40 = HTML
  4. temp.fsizemenu.40.value = A
  5. temp.fsizemenu.40.value.wrap = <li class="langm0">|</li>
  6. temp.fsizemenu.40.value.typolink.parameter.data = page:uid
  7. temp.fsizemenu.40.value.typolink.additionalParams = &Fsize=0
  8. temp.fsizemenu.50 < temp.fsizemenu.40
  9. temp.fsizemenu.50.value = A+
  10. temp.fsizemenu.50.value.wrap = <li class="langm2">|</li>
  11. temp.fsizemenu.50.value.typolink.additionalParams = &Fsize=1
  12. temp.fsizemenu.60 < temp.fsizemenu.40
  13. temp.fsizemenu.60.value = A++
  14. temp.fsizemenu.60.value.wrap = <li class="langm3">|</li>
  15. temp.fsizemenu.60.value.typolink.additionalParams = &Fsize=2


Der Code ist ja nicht ganz so schwer, es werden drei Links erzeugt auf die gerade aktive Seite und an jeden wird einer der drei Paramter drangehangen.

So jetzt können wir die Schriftgröße wählen, aber es passiert noch nichts. Wir müssen natürlich die GET-Variable in unserem Typoscript abfragen per Condition. Jetzt brauchen wir aber auch drei CSS Dateien, mit den verschiedenen Werten für die font-size. Ich mache das so, dass ich meine Styles ganz normal schreibe, dann aber die Größenangabe für das body-Tag alleine in drei Dateien reinschreibe mit jeweils unterschiedlichen Werten. Die heißen dann size0.css, size1.css und size2.css

Dann lade ich eine davon je nach Condition als erste und meine restlichen Styles danach, also etwa so:

Typoscript:Zeilennummerierung:  An / Aus

  1. [globalVar = GP:Fsize<1]
  2. page.includeCSS.file1 = css/size0.css
  3. page.includeCSS.file1.title = Font Size Step 1
  4. page.includeCSS.file1.import = 1
  5. [END]
  6.  
  7. [globalVar = GP:Fsize=1]
  8. page.includeCSS.file1 = css/size1.css
  9. page.includeCSS.file1.title = Font Size Step 2
  10. page.includeCSS.file1.import = 1
  11. [END]
  12.  
  13. [globalVar = GP:Fsize=2]
  14. page.includeCSS.file1 = css/size2.css
  15. page.includeCSS.file1.title = Font Size Step 3
  16. page.includeCSS.file1.import = 1
  17. [END]
  18.  
  19. page.includeCSS.file2 = css/basic_styles.css
  20. page.includeCSS.file2.title = Styles für die Bildschirmausgabe
  21. page.includeCSS.file2.import = 1
  22. page.includeCSS.file3 = css/additional.css
  23. page.includeCSS.file3.title = Styles für die Bildschirmausgabe
  24. page.includeCSS.file3.import = 1


Fertig, damit haben wir eine Schriftgrößenauswahl, die über die ganze Seite hinweg mitgenommen wird. Da es eine normale GET-Variable ist, so wie der Sprachparameter auch, kann man das natürlich auch in RealURL einbinden.

Ich bin jetzt erstmal in Urlaub und kann auf Fragen dazu nicht antworten, würde mich aber trotzdem über Hinweise, Anmerkungen und auch Fragen freuen.

Viele Grüße

Christian

<TS> config.baseURL = http://www.kitsunet.de/ </TS>
Verfasst am: 30.11.2006 [11:48]
slack1982

dabei seit: 06.07.2006
Beiträge: 88

Hi,
erstmal einen dicken Lob, dass du es verwirklicht hast!!!

Die Doku habe ich jetzt überflogen und werde es demnächst mal ausprobieren.
Werde mich dann genauer fassen. Schönen Urlaub nocht!

Gruß Alexander
Verfasst am: 08.12.2006 [08:39]
tomgr

dabei seit: 13.12.2005
Beiträge: 85

Moin,
ich habe einmal versucht Dein Vergrößern/Verkleinern umzusetzen. Leider ohne Erfolg. Vielleicht kannst Du mir ja einen Tipp geben. Ich habe drei Marker gesetzt. Werden auch angezeigt (Ist nur zu Versuchszwecken-Verschönerung folgt). Anklicken kann man sie aber es passiert nichts.

im SETUP

Typoscript:Zeilennummerierung:  An / Aus

  1. config.linkVars = Fsize
  2.  
  3. [globalVar = GP:Fsize<1]
  4. seite.includeCSS.file1 = fileadmin/css/size0.css
  5. seite.includeCSS.file1.title = Font Size Step 1
  6. seite.includeCSS.file1.import = 1
  7. [END]
  8.  
  9. [globalVar = GP:Fsize=1]
  10. seite.includeCSS.file1 = fileadmin/css/size1.css
  11. seite.includeCSS.file1.title = Font Size Step 2
  12. seite.includeCSS.file1.import = 1
  13. [END]
  14.  
  15. [globalVar = GP:Fsize=2]
  16. seite.includeCSS.file1 = fileadmin/css/size2.css
  17. seite.includeCSS.file1.title = Font Size Step 3
  18. seite.includeCSS.file1.import = 1
  19. [END]
  20.  
  21. #die Marker:
  22.  
  23. marks.fsizemenu = COA
  24. marks.fsizemenu.40 = HTML
  25. marks.fsizemenu.40.value = A
  26. marks.fsizemenu.40.value.typolink.parameter.data = page:uid
  27. marks.fsizemenu.40.value.typolink.additionalParams = &Fsize=0
  28.  
  29. marks.fsizemenu1 = COA
  30. marks.fsizemenu1.40 = HTML
  31. marks.fsizemenu1.40.value = A+
  32. marks.fsizemenu1.40.value.typolink.parameter.data = page:uid
  33. marks.fsizemenu1.40.value.typolink.additionalParams = &Fsize=1
  34.  
  35. marks.fsizemenu2 = COA
  36. marks.fsizemenu2.40 = HTML
  37. marks.fsizemenu2.40.value = A++
  38. marks.fsizemenu2.40.value.typolink.parameter.data = page:uid
  39. marks.fsizemenu2.40.value.typolink.additionalParams = &Fsize=2
Verfasst am: 22.12.2006 [14:57]
Kitsunet


[Themenersteller]
dabei seit: 02.02.2006
Beiträge: 1583

So, war im Urlaub, daher hat es länger gedauert.

Also auf den ersten Blick kann ich keinen Fehler entdecken. Hast du die entsprechenden CSS Dateien angelegt wie ich das beschrieben habe?

Du darfst dann in deiner Haupt CSS Datei natürlich nicht die Größenangabe im Bodytag wieder überschreiben.

Viele Grüße

Christian

<TS> config.baseURL = http://www.kitsunet.de/ </TS>
Verfasst am: 29.12.2006 [17:21]
Mayon

dabei seit: 23.01.2006
Beiträge: 33

icon_cry.gif
Hab den Code gerade ausprobiert!
Nur ein Problem gibts:
Nachdem man auf A+ oder A++ umgestellt hat kommt man nicht wieder in die Normale Schriftgröße.
In der Url wird die neue size nämlich einfach hinten angehängt.
startseite.html?&Fsize=0&Fsize=2
oder
startseite.html?&Fsize=0&Fsize=1
Verfasst am: 01.01.2007 [16:17]
Kitsunet


[Themenersteller]
dabei seit: 02.02.2006
Beiträge: 1583

Also normalerweise sollte das nur ein kosmetisches Problem sein und die Größen trotzdem richtig umgestellt werden, aber hiermit:

config.uniqueLinkVars = 1

kannst du einstellen, das eine Variable nur einmal in der URL auftaucht. Dann sollte es klappen...

Grüße

Christian

<TS> config.baseURL = http://www.kitsunet.de/ </TS>
Verfasst am: 02.01.2007 [18:12]
Mayon

dabei seit: 23.01.2006
Beiträge: 33

icon_biggrin.gif SUPER EINFACH KLASSE icon_biggrin.gif

Endlich eine tolle Möglichkeit die Schriftgröße zu switchen.
Und vor allem klapptes in jedem Browser.

D A N K E

config.uniqueLinkVars = 1

war dann noch das Sahnehäubchen. Jetzt läuftes wie geschmiert.


[Dieser Beitrag wurde 1 mal bearbeitet. Zuletzt am 02.01.2007 um 18:14]
Verfasst am: 26.01.2007 [09:04]
Arnie2001

dabei seit: 01.11.2003
Beiträge: 211

Finde ich auch super, leider taucht ein Problem mit Realurl auf :


Schriftgrößenveränderung Typoscript:


Typoscript:Zeilennummerierung:  An / Aus

  1. temp.fsizemenu = COA
  2.  
  3. temp.fsizemenu.wrap = <ul id="navigation2 class="sizemenu">|</ul>
  4. temp.fsizemenu.40 = HTML
  5. temp.fsizemenu.40.value = Normal  A
  6. temp.fsizemenu.40.value.wrap = <li class="sizepunkt">|</li>
  7. temp.fsizemenu.40.value.typolink.parameter.data = page:uid
  8. temp.fsizemenu.40.value.typolink.additionalParams = &Fsize=0&no_cache=1&tx_ttnews[tt_news]
  9. temp.fsizemenu.50 < temp.fsizemenu.40
  10. temp.fsizemenu.50.value = Mittel  A+
  11. temp.fsizemenu.50.value.wrap = <li class="sizepunkt">|</li>
  12. temp.fsizemenu.50.value.typolink.additionalParams = &Fsize=1&no_cache=1&tx_ttnews[tt_news]
  13. temp.fsizemenu.60 < temp.fsizemenu.40
  14. temp.fsizemenu.60.value = Groß  A++
  15. temp.fsizemenu.60.value.wrap = <li class="sizepunkt">|</li>
  16. temp.fsizemenu.60.value.typolink.additionalParams = &Fsize=2&no_cache=1&tx_ttnews[tt_news]


Problem: Der Link der generiert wird, zeigt immer nur articel.html an, er müsste aber beim Umschalten auf eine andere Schriftgröße bei der Singelansicht

www.beispiel.de/veranstaltungen/news/article/unterhaltung.html

anzeigen. Macht er aber nicht, sondern nur

www.beispiel.de/veranstaltungen/news/article.html

und damit kommt die Fehlermeldung : Keine news_id übergeben

Bei den anderen Parameter/Variablen in der realurlconf.ph ging das so ja ganz gut:

Php:Zeilennummerierung:  An / Aus

  1. array(
  2. 'GETvar' => 'Fsize',
  3.  'valueMap' => array(
  4.                                                                                   'n' => '0',
  5.           'g' => '1',                             'gg' => '2',
  6.                                                                                                                 ),     
  7.            array(
  8.                  'GETvar' => 'no_cache',
  9.                  'valueMap' => array(
  10.                  'nc' => 1,
  11.                  ),
  12.                  'noMatch' => 'bypass',
  13.                  ),

Wie muss ich den Link in Typoscript angeben , dass er in richtig generiert?

Wäre echt super von Euch, schon mal danke im Vorraus!

Man muss nicht alles wissen, jedoch sollte man wissen wo man Hilfe findet, bzw. in Erfahrung bringen wo es steht.

Quadronet Internetlösungen
http://www.quadronet.de
Verfasst am: 26.01.2007 [09:14]
Kitsunet


[Themenersteller]
dabei seit: 02.02.2006
Beiträge: 1583

nimm mal überall aus den additionalParams die tx_ttnews raus.

Also anstatt:

temp.fsizemenu.40.value.typolink.additionalParams = &Fsize=0&no_cache=1&tx_ttnews[tt_news]

dann:

#
temp.fsizemenu.40.value.typolink.additionalParams = &Fsize=0

Grüße

Christian

<TS> config.baseURL = http://www.kitsunet.de/ </TS>
Verfasst am: 02.02.2007 [23:29]
gongo

dabei seit: 04.08.2006
Beiträge: 83

das funktioniert soweit ganz gut. Nur hab ich auch realurl und ich frag mich wie denn die URL dort aussehen soll? Den Parameter fsize in eine leserliche URL zu setzen macht auch nicht wirklich Sinn. xxx.html?Fsize=1 wäre ja ok.
Ich habe auch wieder das problem dass wenn ich die Seite wechsle die Schrift wieder klein wir icon_cry.gif
Und dann frage ich mich auch warum in Typo3 solche Parameter immer über die URL mit geschleppt werden. Gibt es da nicht eventuell die Möglichkeit diese in einer SessionVariable abzulegen?


[Dieser Beitrag wurde 2 mal bearbeitet. Zuletzt am 02.02.2007 um 23:34]




 
TYPO3 Version 4.2.0 testen

TYPO3 Ver. 4.2.0 testen

Testen Sie die neue TYPO3 Version 4.2.0 kostenlos für einen Monat

TYPO3 Bücher

TYPO3 Workshops


TYPO3 Einführungsschulung
in Berlin:
Montag, 07.07.
in Espelkamp:
Montag, 04.08.

TYPO3 Intensivschulung
in Espelkamp:
Mi., 06.08. - Fr., 08.08.
in Würzburg:
Mo., 18.08. - Mi., 20.08.
in Köln:
Mo., 01.09. - Mi., 03.09.
in Berlin:
Mi., 24.09. - Fr., 26.09.

TYPO3 Extensionschulung
in Berlin:
Mo., 14.07. - Mi., 16.07.
in Espelkamp:
Mo., 11.08. - Mi., 13.08.