Zum Inhalt springen

Texte vergrößern - Sehbehinderungen

Erstellt am 7. Februar 2006 · 22 Antworten · letzte Antwort am 9. Juli 2006 · Seite 1 von 2

Tags: JavaScript & AJAX, Frage

Mopps ·

oh man woida, du bist gut. Genau das will ich bzw. hab ich eigentlich schon umgesetzt, aber eben noch nicht in Typo3 reinbekommen. Ich weiss nicht wie ich es anstellen soll. Die Methoden habe ich.

Vielleicht kannst du dir das mal anschauen:
#382856

Vielleicht kannst du mir helfen, wie ich das in Typo bekomme?
Wäre sehr dankbar.

Grüße,
Stephan

woida ·

Im Prinzip gehts so:
Kickstarter -> Extension Key ausfüllen (sagen wir mal, 'tx_styleswitcher') -> Frontend Plugins anklicken -> "Just include library" auswählen (ganz unten) -> Update -> View Result -> Write -> Extension installieren.

Dann öffnet du die Datei class.tx_txstyleswitcher_pi1.php und schreibst die Main-Methode:

$content='<div style="z-index:55855;background-color: #FF0000;left:426px;top:31px;width:204px;height:230px;position:absolute;">';
$size = $GLOBALS['TSFE']->fe_user->getKey('ses',$this->extKey);
if (isset($this->piVars['size'])) {
	$size=intval($this->piVars['size']);			
	$GLOBALS['TSFE']->fe_user->setKey('ses',$this->extKey,$size);
}
if ($size) {
	$content.='Sie haben '.$size.' gewählt<br />';
	$GLOBALS['TSFE']->additionalHeaderData[$extKey]='<link rel="stylesheet" type="text/css" href="fileadmin/css/'.$size.'.css" media="screen" />';
}
$content.='Bitte währen Sie die Ihre Bildschirmgröße:<br />';
$this->piVars['size'] = '1024';
$content.= $this->pi_linkTP_keepPIvars('1024x768').'<br />';
$this->piVars['size'] = '800';
$content.= $this->pi_linkTP_keepPIvars('800x600').'<br />';
$content.='</div>';
return $content;

Dann im Template einfach sowas wie:

page.4 < plugin.tx_txstyleswitcher_pi1

Jetzt hast du auf jeder Seite eine hübsche rote Box ( #giggle# ) in der du dich zwischen 1024x768 und 800x600 entscheiden kannst. Wenn du eins auswählst, wird die entsprechende CSS-Datei eingebunden und eine Sessionvariable gesetzt, so daß die gleiche CSS-Datei auf den anderen Seiten auch geladen wird.

Das ganze kann man noch verfeinern:
Nach dem Auswählen hat man die Variable tx_txstyleswitcher_pi1[​size]=1024 in der URI. Man könnte z.B. dann die Seite automatische ohne der Variable neu laden.
Du kannst noch ein Cookie setzen, daß der Besucher der morgen wieder vorbeikommt, den gleiche Auflösung hat wie heute.
...

Ohne Gewähr und Support ....

Mopps ·

vielen Dank. Wenn ich anstatt

$this->piVars['size'] = '1024';
$content.= $this->pi_linkTP_keepPIvars('1024x768').'';

folgendes ändere:

$this->piVars['size'] = 'standard';
$content.= $this->pi_linkTP_keepPIvars('standard').'';

dann schreibt er nicht mehr den additionalHeaderData. Dürfen das nur Zahlen sein, eigentlich nicht, oder? Hab hier auch was empfohlen bekommen, da geht es auch mit Text:

$this->piVars['mood'] = 'great';
http://typo3.org/development/articles/using-links-in-frontend-plugins/page/5/

Mopps ·

oh, hat sich erledigt. habs hinbekommen. Vielen Dank woida! Hast mir sehr geholfen.

Noch was: Wie müßte es aussehen, wenn ich einen permanenten cookie setzen möchte?

Andrea_Herzog ·

Hallo zusammen,
ich verfolge mit Interesse eure nette Diskussion.
Wenn ich mit dem Style-Switcher arbeite (n würde), dann habe ich ein CSS für 1024 und 800 - Auflösung.
Ist das korrekt?

Wenn ich aber eine Seite (s. Greenpeace) mit nur vergrößerten Texten haben will, dann brauche ich für jede Größe auch ein CSS.
Stimmmt das so?

Die Navigation zu dem jeweiligen CSS läuft dann über Buttons (die der Styleswitcher mitliefert und im Template irgendwie gelayoutet werden?) - die ich frei definieren kann? Wenn ja wie?

Liege ich da ungefähr richtig?

Mopps ·

--> Wenn ich mit dem Style-Switcher arbeite (n würde), dann habe ich ein CSS für 1024 und 800 - Auflösung. Ist das korrekt?

stimmt. ich habe ein "standard.css" und ein "kontrast.css". Mit der Lösung von woida geht das sehr gut.

--> Wenn ich aber eine Seite (s. Greenpeace) mit nur vergrößerten Texten haben will, dann brauche ich für jede Größe auch ein CSS.

daran arbeite ich auch gerade. Für jede Größe ein neues css, wäre mir zu blöd. In meinen normalen css (standard und kontrast) verwende ich relative Größenangaben (z.Bsp: em), dann müsste es auch anders gehen. Wenn ich schlauer bin, werde ich es posten

--> Die Navigation zu dem jeweiligen CSS läuft dann über Buttons (die der Styleswitcher mitliefert und im Template irgendwie gelayoutet werden?) - die ich frei definieren kann? Wenn ja wie?

In dem Beispiel von woida sind die Links schon drin. probier es aus und du wirst eine rote box sehen mit den Links. Die Ausgabe kannst du sehr leicht anpassen, z.Bsp. die Links in einer Liste ausgeben und per css formatieren.

Mopps ·

#angry#

irgendwie schreibt er bei mir den cookie nicht und ich versteh zum teufel nicht warum.

function main($content,$conf){
    
    $style = $_COOKIE["design"];

    if (isset($this->piVars['style'])) {
        $style=$this->piVars['style'];
        setcookie("design", $style, time()+60*60*24*365);
        $GLOBALS['TSFE']->additionalHeaderData[$extKey]='<link rel="stylesheet" type="text/css" href="fileadmin/template/main/'.$style.'.css" media="screen" />';
    }
    elseif (!isset($this->piVars['style'])) {
        if ($style) {
             $GLOBALS['TSFE']->additionalHeaderData[$extKey]='<link rel="stylesheet" type="text/css" href="fileadmin/template/main/'.$style.'.css" media="screen" />';
        }
        else {
             $GLOBALS['TSFE']->additionalHeaderData[$extKey]='<link rel="stylesheet" type="text/css" href="fileadmin/template/main/standard.css" media="screen" />';
        }
}

$this->piVars['style'] = 'standard';
$content.= '<ul><li>';
$content.= $this->pi_linkTP_keepPIvars('Standard').'';
$content.= '</li><li>';
$this->piVars['style'] = 'kontrast';
$content.= $this->pi_linkTP_keepPIvars('Kontrast').'';
$content.= '</li></ul>';
return $content;
}

}

wenn ich die seite zum 1. mal aufrufe kommt korrekt das standard.css.
Nehme ich Kontrast wechselt er korrekt das css. Rufe ich jetzt im Menü andere Seiten auf nimmt er wieder standard.css

Schreibt er das cookie nicht? Aber so müsste es doch stimmen? Oder liegt der Fehler woanders?

Stephan

Mopps ·

mmm, woida.
Also irgendwas scheint da gehörig schief zu gehen bei mir. Wenn ich dein Beispiel ausprobiere liest er mal den einen Wert, mal den anderen wert. Das gibt für mich keinen Sinn, ich probier da jetzt den ganzen Tag dran rum, habe zig Möglichkeiten durch, mit deinem Session cookie und mit festem cookie. Im cookie steht der richtige Wert, aber wenn ich in meinem Menü "wild" durch die Seite klicke, nimmt er zum Teil trotzdem hin und wieder den Wert der gar nicht im Cookie steht. Wie kann denn das sein?

typo_3_newbie ·

Hallo, Forum/woida,

ich habe deinen geposteten Code für den Styleswitcher bei mir in die generierte Extension eingefügt.

Soblad ich aber den Link für den Darstellungswechsel betätige bekomme ich eine Fehlermeldung, mit der ich nicht viel anfangen kann:

Warning: Cannot modify header information - headers already sent by (output started at /.../typo3conf/ext/tx_styleswitcher/pi1/class.tx_txstyleswitcher_pi1.php:82) in /.../typo3_src-4.0/typo3/sysext/cms/tslib/class.tslib_fe.php on line 2767

(im Quelltext steht vor der Fehlermeldung ein Zeilenumbruch: br )

Die Seite wird korrekt dargestellt bzw. das Stylesheet wird auch gewechselt. Ich bekomme einfach (nur) zusätzlich diese Fehlermeldung.

Eingebunden habe ich die Extension (nach der Beschreibung) an einem Marker:

page.10.marks.main < plugin.tx_txstyleswitcher_pi1

Hat evtl. jemand eine Idee oder Lösung?

Achim

typo_3_newbie ·

ok, ich hab *ge-spam-t*...

...ich hab den Fehler selbst gefunden.

Wie war das noch?...nach x Stunden vor dem Bildschirm sollte eine kurze Pause eingelegt werden?

Am Ende des Scripts "class.tx_txstyleswitcher_pi1.php" waren zwei "Tabs".
Nach der Pause fiel mir dann ein, wonach ich im Forum suchen musste...

Achim