Styleswitcher: Schriftgröße und Kontrast anpassen

Gesperrt
thanatos
Beiträge: 23
Registriert: So 5. Feb 2006, 18:00
Wohnort: Hannover
Kontaktdaten:

Styleswitcher: Schriftgröße und Kontrast anpassen

Beitrag von thanatos » Do 6. Nov 2008, 22:40

Hallo Community!

Hier stelle ich ein Modul vor, mit dem die Schriftgröße und der Kontrast im Frontend verändert werden können.
Update [18.11.2009]: Die Website, auf der ich die Funktion dieses Moduls gezeigt habe, betreibe ich nicht mehr. Vielleicht wird der Styleswitcher ja noch irgendwo anders eingesetzt und in einem Beitrag verlinkt.

Ziel des Moduls
Barrierefreiheit wird im Internet immer wichtiger, teilweise auch durch Verordnungen vorgeschrieben. Einen Punkt dabei stellt auch die Möglichkeit dar, dass Benutzer im Frontend die Schriftgröße anpassen und den Kontrast verändern können. Damit werden Menschen mit mittleren Sehbeeinträchtigungen berücksichtigt, die beispielsweise sehr lichtempfindlich sind oder kleine Schrift nur schwer lesen können. Weil nicht davon ausgegangen werden kann, dass jeder Benutzer mit seinem Browser so gut umgehen kann, dass er die Schriftgröße clientseitig vergrößern kann, sollte eine entsprechende Funktion auf der Website angeboten werden.

Funktionsweise des Moduls
Über eine zusätzliche Hilfsnavigation können die Benutzer die Schriftgröße und den Kontrast verändern. Klicken sie auf einen entsprechenden Link, wird ein Cookie angelegt, der die Benutzereingabe abspeichert und an Contenido zurück gibt. Dadurch muss nicht bei jeder neu geöffneten Unterseite die Eingabe erneut getätigt werden. Das ganze Prinzip basiert auf einem Artikel, den ich vor längerem bei Lingo4U gefunden und dann für Contenido angepasst habe.

Einbinden des Moduls
Um das Modul einzubinden, müssen einige Dateien verändert bzw. angelegt werden:
  • Die Datei cms/css/style.css wird um eine Cookie-Abfrage erweitert und muss als style.php abgespeichert werden.
  • Entsprechend müsts ihr den Verweis auf die CSS-Datei im Layout ändern:

    Code: Alles auswählen

    <link rel="stylesheet" href="css/style.php" type="text/css" media="all" />
  • Die Datei cms/includes/fontsize.inc.php muss angelegt werden.
  • Dieselbe Datei muss in der cms/front_content.php eingebunden werden.
  • Für die Kontrastauswahl müsst ihr sämtliche Grafiken der Website einmal im hellen und einmal im dunklen Design abspeichern.
  • Die Grafiken müssen in zwei verschiedenen Unterordner von cms/images sortiert werden.
  • Und natürlich müsst ihr das eigentliche Modul für die Hilfsnavigation anlegen und dafür ein Template abspeichern.
Erweitern der cms/css/style.css zur cms/css/style.php
An den Anfang eurer CSS-Datei fügt Ihr den PHP-Code ein, der die Werte der Cookies ausliest und in Variablen schreibt. Um die Variablen zu nutzen, ruft ihr sie in eigenen PHP-Blöcken innerhalb des eigentlichen CSS-Bereichs auf. In diesem Code habe ich alle Variablen beispielhaft eingebaut. Wenn ihr die $fontsize als Attribut für html festlegt, könnt ihr im gesamten restlichen CSS-Bereich mit prozentualen Angaben arbeiten, die sich darauf beziehen. Speichert die veränderte CSS-Datei als cms/css/style.php ab, damit der PHP-Code interpretiert werden kann. Denkt daran, das auch im Layout zu verändern.

Code: Alles auswählen

<?php
  header('Content-Type: text/css; charset=iso-8859-1');
  $browser = getenv("HTTP_USER_AGENT");

  /*
  * Caching der Seite verhindern
  */
  header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
  header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
  header('Cache-Control: no-store');
  header('Pragma: no-cache');

  list($usec, $sec) = explode(' ',microtime());
  print('   /* '.((float)$usec + (float)$sec)." */\n");

  if (!empty($_COOKIE['fontsize'])) {
    $fontsize = $_COOKIE['fontsize'];
  } elseif (!empty($_COOKIE['fontsizeR'])) {
    $fontsize = $_COOKIE['fontsizeR'];
  } else {
    $fontsize = 100;
  }

  if (!empty($_COOKIE['styleswitch'])) {
    $design = $_COOKIE['styleswitch'];
  } elseif (!empty($_COOKIE['styleswitchR'])) {
    $design = $_COOKIE['styleswitchR'];
  } else {
    $design = 001;
  }

  switch ($design) {
    case 001:
    $bg_color = "FFFFFF";
    $font_color = "000000";
    $img_folder = "light";
    break;
  case 002:
    $bg_color = "000000";
    $font_color = "FFFFFF";
    $img_folder = "dark";
    break;
  }
?>

html {
  font-size: <?php print($fontsize); ?>%;
}

body {
  color: #<?php print($font_color); ?>;
  background-color: #<?php print($bg_color); ?>;
}

#title {
  font-size: 100%
  background-image:url(../images/<?php print($img_folder); ?>/title.png);
}

Anlegen der cms/includes/fontsize.inc.php
Die fontsize.inc.php enthält den eigentlichen Programmcode, der die Cookies anlegt und die Werte reinschreibt. Sie muss im Includes-Verzeichnis des Mandanten-Frontends abgespeichert werden.

Code: Alles auswählen

<?php
/* nach einem gesetzten Cookie suchen */
  if (!empty($_COOKIE['fontsize'])) {
    $fontsize = $_COOKIE['fontsize'];
  } elseif (!empty($_COOKIE['fontsizeR'])) {
    $fontsize = $_COOKIE['fontsizeR'];
  } else {
    $fontsize = 100;
  }
  if (!empty($_COOKIE['styleswitch'])) {
    $design = $_COOKIE['styleswitch'];
  } elseif (!empty($_COOKIE['styleswitchR'])) {
    $design = $_COOKIE['styleswitchR'];
  } else {
    $design = 001;
  }

/* Schriftgröße soll geändert werden */
  if (isset($_GET['font'])) {
    if ($_GET['font']=='base') {
      $fontsize = 100;
    } elseif (($_GET['font']=='dec') && ($fontsize>70)) { /* minimale Schriftgröße in % */
      $fontsize -= 10;
    } elseif (($_GET['font']=='inc') && ($fontsize<160)) {/* maximale Schriftgröße in % */
      $fontsize += 10;
    }
  /* Session-Cookie setzen, da die meist akzeptiert werden */
    setcookie('fontsize', $fontsize, NULL, '/');
  /* zusätzlich versuchen, dauerhaften Cookie zu setzen */
    setcookie('fontsizeR', $fontsize, time()+60*60*24*365, '/');
  /* Caching der Seite verhindern */
    header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
    header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
    header('Cache-Control: no-store');
    header('Pragma: no-cache');
  }

/* Design soll geändert werden */
  if (isset($_GET['style'])) {
    if ($_GET['style']=='light') {
      $design = 001;
    } elseif ($_GET['style']=='dark') {
      $design = 002;
    }
  /* Session-Cookie setzen, da die meist akzeptiert werden */
    setcookie('styleswitch', $design, NULL, '/');
  /* zusätzlich versuchen, dauerhaften Cookie zu setzen */
    setcookie('styleswitchR', $design, time()+60*60*24*365, '/');
  /* Caching der Seite verhindern */
    header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
    header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
    header('Cache-Control: no-store');
    header('Pragma: no-cache');
  }
?>
Einbinden der fontsize.inc.php in die cms/front_content.php
Damit der Code in das Frontend eingebunden wird, fügt Ihr einfach in die cms/front_content.php eine Zeile ein:

Code: Alles auswählen

include ("includes/fontsize.inc.php");
Anpassen und sortieren der Grafiken
Jede Grafik, die ihr im Frontend nutzt, muss für den hellen und den dunklen Kontrast angepasst werden. Die verschiedenen Versionen werden im Ordner cms/images auf zwei Unterordner verteilt: cms/images/light für die hellen Grafiken mit dunklem Vordergrund, cms/images/dark für die dunklen Grafiken mit hellem Vordergrund.

Anlegen des Moduls Switcher
Die Auswertung der Internetadresse und die Auflösung der Sonderzeichen erfolg ebenso im Modul, wie die Generierung der Templates, mit der die Hilfsnavigation erzeugt wird. Das Modul hat nur einen Output-Bereich. Es wäre allerdings denkbar, zukünftig die Eingabe der Variablen wie z.B. der Dateinamen für die Navigationsbuttons über den Input-Bereich festzulegen.

Code: Alles auswählen

<?php
/***********************************************
* MODUL FONT- AND STYLESWITCHER
* 
* Area        :     Output
* Description :     Barrierefreie Navigation zum Anpassen der Schriftgröße und des Kontrasts
* Author      :     Lennart Brand
* Copyright   :     mosaik | individual service
* Mail        :     info@mosaik-is.de
* Created     :     06-11-2008
* Version     :     0.9 beta
************************************************/

  $actionfont = array("inc","base","dec");
  $namefont = array("fontbigger","fontbase","fontsmaller");
  $titlefont = array("vergr&ouml;&szlig;ern","zur&uuml;cksetzen","verkleinern");
  $actionstyle = array("light","dark");
  $namestyle = array("lightdesign","darkdesign");
  $titlestyle = array("helles","dunkles");

  $document_uri_font = current(preg_split('/[&|\?]{1}font=/', $_SERVER['REQUEST_URI']));
  $document_ref_font = str_replace('&', '&', $document_uri_font);
  $document_uri_style = current(preg_split('/[&|\?]{1}style=/', $_SERVER['REQUEST_URI']));
  $document_ref_style = str_replace('&', '&', $document_uri_style);

  if (strpos($document_ref_font, '?') === FALSE) {
    $document_ref_font .= '?font=';
  } else {
    $document_ref_font .= '&font=';
  }

  if (strpos($document_ref_style, '?') === FALSE) {
    $document_ref_style .= '?style=';
  } else {
    $document_ref_style .= '&style=';
  }
  
  for($i=0;$i<3;$i++){
    toFontTpl($tpl, $document_ref_font, $actionfont[$i], $namefont[$i], $titlefont[$i]);
  }
  $sCatsFont = $tpl->generate('templates/navigation_barrierfree_item.html', true, false);
  $tpl->reset();

  for($i=0;$i<2;$i++){
    toStyleTpl($tpl, $document_ref_style, $actionstyle[$i], $namestyle[$i], $titlestyle[$i]);
  }
  $sCatsStyle = $tpl->generate('templates/navigation_barrierfree_item.html', true, false);
  $tpl->reset();

  $tpl->set('s', 'itemsfont', $sCatsFont);
  $tpl->set('s', 'itemsstyle', $sCatsStyle);
  $tpl->generate('templates/navigation_barrierfree_container.html');

function toFontTpl(&$oTpl, $url, $action, $name, $title) {
  $oTpl->set('d', 'url', $url);
  $oTpl->set('d', 'action', $action);
  $oTpl->set('d', 'label', $name);
  $oTpl->set('d', 'title', "Schriftgr&ouml;&szlig;e ".$title);
  $oTpl->next();
}

function toStyleTpl(&$oTpl, $url, $action, $name, $title) {
  $oTpl->set('d', 'url', $url);
  $oTpl->set('d', 'action', $action);
  $oTpl->set('d', 'label', $name);
  $oTpl->set('d', 'title', $title." Design");
  $oTpl->next();
}
?>
Anlegen der Templates
Das Template barrierfree_container legt, genau wie bei der Hauptnavigation, den Container fest, in den die einzelnen Navigationselemente als Liste eingefügt werden. Ihr speichert es in der Datei cms/templates/navigation_barrierfree_container.html ab:

Code: Alles auswählen

<h3>Layout anpassen:</h3>
  <ul> <!-- barrier -->
    {itemsfont}{itemsstyle}
  </ul> <!-- /barrier -->
Das Template barrierfree_item erstellt die einzelnen Navigationselemente als Listenpunkte und wird in der Datei cms/templates/navigation_barrierfree_item.html gespeichert:

Code: Alles auswählen

<!-- BEGIN:BLOCK --><li><a href="{url}{action}" title="{title}"><img src="images/{label}.png" height="16" width="16" alt="{title}" title="{title}" border="0" align="absmiddle" /></a></li><!-- END:BLOCK -->
Anlegen der Navigationsbuttons
Für jeden Navigationspunkt müsst ihr nun nur noch einen entsprechenden Button erstellen. Im zuletzt erstellen Template wurde die Größe der Buttons auf 16x16 Pixel festgelegt. Denkt daran, diese Werte zu ändern, wenn eure Navigationsbuttons eine andere Größe haben. Die Grafiken müssen im Ordner cms/images liegen und, sofern ihr die Einträge Arrays $namefont und $namestyle nicht verändert, folgende Namen haben:
  • Schriftgröße erhöhen: fontbigger.png
  • Schriftgröße zurücksetzen: fontbase.png
  • Schriftgröße verkleinern: fontsmaller.png
  • helles Design auswählen: lightdesign.png
  • dunkles Design auswählen: darkdesign.png
Fazit
Das Modul ist noch relativ aufwändig. Gerade die Dopplungen im Modul-Code stören mich noch etwas. Außerdem weiß ich nicht, ob sich die Benutzereingaben über eine Session komfortabler lösen lassen als über die Cookies. Meine PHP-Kenntnisse sind eher niedrig und durch herum experimentieren entstanden. Deshalb meine große Bitte: Wenn euch das Modul gefällt und ihr Lust und Zeit findet, bastelt daran! Ich würde selbst gern wissen, wie es sich optimieren lässt, da ich das Modul inzwischen auf fast jeder Seite einsetze. Ach ja: Die Erweiterung des URIs um die Variablen ist vollständig kompatibel mit dem Plugin Advanced_Mod_Rewrite von xmurrix.

Bitte habt Nachsicht, falls irgend etwas nicht auf Anhieb funktioniert. Das ist mein erstes Modul, das ich weitgehend selbst geschrieben bzw. angepasst habe und hier veröffentliche. Bei mir funktioniert's soweit. Ich beanspruche Frischlingschutz ;)

Beste Grüße
Thanatos
Zuletzt geändert von thanatos am Mi 18. Nov 2009, 10:03, insgesamt 1-mal geändert.
Sie sind lustig. Sie gefallen mir. Und jetzt RAUS! (Horst Evers)

Freddy
Beiträge: 252
Registriert: Fr 6. Mai 2005, 21:01
Wohnort: Gummersbach
Kontaktdaten:

Re: Styleswitcher: Schriftgröße und Kontrast anpassen

Beitrag von Freddy » Mo 10. Nov 2008, 14:23

Sieht ja echt genial aus, von der Funktion. Werde es bei der nächsten Gelegenheit mal testen.

Freddy
Beiträge: 252
Registriert: Fr 6. Mai 2005, 21:01
Wohnort: Gummersbach
Kontaktdaten:

Re: Styleswitcher: Schriftgröße und Kontrast anpassen

Beitrag von Freddy » So 28. Dez 2008, 17:35

Hab es jetzt mal versucht so wie beschrieben alles einzubinden. Hab da aber leider noch ein Problem, sobald ich das Modul einbinde kommt die Fehlermeldung beim aufrufen der Seite und nach der Fehlermeldung wird der Rest nicht mehr angezeigt:

Code: Alles auswählen

Fatal error: Call to a member function set() on a non-object in /.../cms/front_content.php(955) : eval()'d code on line 93
Nachtrag: Nachdem ich eine Kategorie mit Startartikel angelegt hatte, hat sich die Fehlermeldung von selbst behoben. Leider funktioniert es aber immer noch nicht. Die Buttons werden angezeigt aber es passiert nichts ausser das in der Url sich verändert wenn man draufklickt in z.B. .../index.html?font=base&style=light . Ich kann mir vorstellen das es vielleicht im Einbinden der fontsize.inc.php in die cms/front_content.php liegen kann. Ich habe es einfach mal am Ende vor ?> eingebunden.

Freddy
Beiträge: 252
Registriert: Fr 6. Mai 2005, 21:01
Wohnort: Gummersbach
Kontaktdaten:

Re: Styleswitcher: Schriftgröße und Kontrast anpassen

Beitrag von Freddy » Di 13. Jan 2009, 21:07

Hallo Zusammen,
wollte nochmal nachfragen ob jemand eine Idee haben könnte wieso es bei mir nicht funktioniert. Wenn ich es wie beschrieben machen wird keine CSS-Style bei mir eingebunden. Wenn ich auf irgendein Button klicke kommt folgende Fehlermeldung:
Warning: Cannot modify header information - headers already sent by (output started at /www/.../cms/front_content.php:963) in /www/.../cms/includes/fontsize.inc.php on line 46 und 48,50,51,52,53.
Bin für jeden Rat dankbar.

Freddy
Beiträge: 252
Registriert: Fr 6. Mai 2005, 21:01
Wohnort: Gummersbach
Kontaktdaten:

Re: Styleswitcher: Schriftgröße und Kontrast anpassen

Beitrag von Freddy » So 1. Feb 2009, 14:49

mh, ist es überhaupt mit Contenido 4.8.10 nach dieser Beschreibung möglich. Fände es echt klasse wenn ich es irgendwie auch bei mir zum Laufen bekomme und wäre für jeden Tip dankbar.

matt.loker
Beiträge: 203
Registriert: Mo 7. Mai 2007, 09:05
Kontaktdaten:

Styleswitcher mag irgendwie nicht

Beitrag von matt.loker » Fr 13. Mär 2009, 10:06

Hallo zusammen,
ich habe alles exakt so umgesetzt wie oben beschrieben - bekomme zwar keine Fehlermeldung jedoch tut sich da auch nix. Die Schrfitgröße bleibt unverändert!
Hat das Modul jemand unter 4.8.8 zum Laufen gebracht?

EDIT: Es läuft zwar aber ich es reagiert erst auf den 2 Klick.

Grüße
Matt

matt.loker
Beiträge: 203
Registriert: Mo 7. Mai 2007, 09:05
Kontaktdaten:

Styleswitcher funktioniert nun

Beitrag von matt.loker » Fr 13. Mär 2009, 15:01

Da bei mir der Styleswitcher, so wie er oben beschrieben ist, nicht funktionieren wollte, habe ich ihn etwas umgebaut und nun läuft er auch bei mir.
Was ich gemacht habe ist folgendes:
Im Gegensatz zu thanatos haben ich den Inhalt der style.php in ein Modul gepackt welches ich in meinem Layout über meine CSS-Datei eingebunden habe!
MODUL:Styleswitcher-CSS

Code: Alles auswählen

<?php

  $browser = getenv("HTTP_USER_AGENT");
  
  /*
  * Caching der Seite verhindern
  */
  header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
  header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
  header('Cache-Control: no-store');
  header('Pragma: no-cache');

  if (!empty($_COOKIE['fontsize'])) {
    $fontsize = $_COOKIE['fontsize'];
  } elseif (!empty($_COOKIE['fontsizeR'])) {
    $fontsize = $_COOKIE['fontsizeR'];
  } else {
    $fontsize = 101;
  }

      if (!empty($_COOKIE['styleswitch'])) {
        $design = $_COOKIE['styleswitch'];
      } elseif (!empty($_COOKIE['styleswitchR'])) {
        $design = $_COOKIE['styleswitchR'];
      } else {
        $design = 001;
      }

      switch ($design) {
        case 001:
        $bg_color = "FFFFFF";
        $font_color = "000000";
        $img_folder = "light";
        break;
      case 002:
        $bg_color = "000000";
        $font_color = "FFFFFF";
        $img_folder = "dark";
        break;
      }

echo '<style type="text/css">'."\n<!--\n";
list($usec, $sec) = explode(' ',microtime());
print('   /* '.((float)$usec + (float)$sec)." */\n");
?>
    html {
      font-size: <?php print($fontsize); ?>%;
    }

    body {
      color: #<?php print($font_color); ?>;
      background-color: #<?php print($bg_color); ?>;
    }

    #title {
      font-size: 100%
      background-image:url(../images/<?php print($img_folder); ?>/title.png);
    }
	
<?php
echo " -->\n</style>";?>
Genau wie thanatos habe auch ich die fontsize.inc.php erstellt, unter cms/includes/fontsize.inc.php abgespeichert und in die cms/front_content.php eingebunden!

Code: Alles auswählen

include ("includes/fontsize.inc.php");
Bevor Ihr nun das weiter macht, müsst ihr ein zusätzliches Modul erstellen. Ich habe das Modul Styleswitcher fontset genannt.
MODUL: Styleswitcher fontset

Code: Alles auswählen

<?php

    if (!empty($_GET['uri'])) {
        Header('Location: http://'.$_SERVER['HTTP_HOST'].$_GET['uri']);
    } elseif (!empty($_SERVER['HTTP_REFERER'])) {
        Header('Location: '.$_SERVER['HTTP_REFERER']);
    } else {
        print('Fehler');
    }

?> 
Genau wie thanatos hab ich das Modul Switcher erstellt

Code: Alles auswählen

<?php
    /***********************************************
    * MODUL FONT- AND STYLESWITCHER
    *
    * Area        :     Output
    * Description :     Barrierefreie Navigation zum Anpassen der Schriftgröße und des Kontrasts
    * Author      :     Lennart Brand
    * Copyright   :     mosaik | individual service
    * Mail        :     info@mosaik-is.de
    * Created     :     06-11-2008
    * Version     :     0.9 beta
    ************************************************/

      $actionfont = array("inc","base","dec");
      $namefont = array("fontbigger","fontbase","fontsmaller");
      $titlefont = array("vergr&ouml;&szlig;ern","zur&uuml;cksetzen","verkleinern");
      $actionstyle = array("light","dark");
      $namestyle = array("lightdesign","darkdesign");
      $titlestyle = array("helles","dunkles");
      $redirect_artid = 324; /* ID zum weiterleitenden Artikel */

      $document_ref_font = 'front_content.php?idcat='.$redirect_artid.'&font=';
      $document_ref_style = 'front_content.php?idcat='.$redirect_artid.'&style=';
     
      for($i=0;$i<3;$i++){
        toFontTpl($tpl, $document_ref_font, $actionfont[$i], $namefont[$i], $titlefont[$i]);
      }
      $sCatsFont = $tpl->generate('templates/navigation_barrierfree_item.html', true, false);
      $tpl->reset();

      for($i=0;$i<2;$i++){
        toStyleTpl($tpl, $document_ref_style, $actionstyle[$i], $namestyle[$i], $titlestyle[$i]);
      }
      $sCatsStyle = $tpl->generate('templates/navigation_barrierfree_item.html', true, false);
      $tpl->reset();

      $tpl->set('s', 'itemsfont', $sCatsFont);
      $tpl->set('s', 'itemsstyle', $sCatsStyle);
      $tpl->generate('templates/navigation_barrierfree_container.html');

    function toFontTpl(&$oTpl, $url, $action, $name, $title) {
      $oTpl->set('d', 'url', $url);
      $oTpl->set('d', 'action', $action);
      $oTpl->set('d', 'label', $name);
      $oTpl->set('d', 'title', "Schriftgr&ouml;&szlig;e ".$title);
      $oTpl->next();
    }

    function toStyleTpl(&$oTpl, $url, $action, $name, $title) {
      $oTpl->set('d', 'url', $url);
      $oTpl->set('d', 'action', $action);
      $oTpl->set('d', 'label', $name);
      $oTpl->set('d', 'title', $title." Design");
      $oTpl->next();
    }
    ?>
und es Style&Font Switcher genannt. Im Gegensatz zum Originalmodul ist mein Code ein wenig abgeändert. Zusätzlich hab habe ich die Variable

Code: Alles auswählen

$redirect_artid = 324; /* ID zum weiterleitenden Artikel */
eingebaut. Das ist die Artikel-ID

matt.loker
Beiträge: 203
Registriert: Mo 7. Mai 2007, 09:05
Kontaktdaten:

Styleswitcher funktioniert nun

Beitrag von matt.loker » Fr 13. Mär 2009, 15:12

Da bei mir der Styleswitcher, so wie er oben beschrieben ist, nicht funktionieren wollte, habe ich ihn etwas umgebaut und nun läuft er auch bei mir.
Was ich gemacht habe ist folgendes:
Im Gegensatz zu thanatos haben ich den Inhalt der style.php in ein Modul gepackt welches ich in meinem Layout über meine CSS-Datei eingebunden habe!
MODUL:Styleswitcher-CSS

Code: Alles auswählen

<?php

  $browser = getenv("HTTP_USER_AGENT");
  
  /*
  * Caching der Seite verhindern
  */
  header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
  header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
  header('Cache-Control: no-store');
  header('Pragma: no-cache');

  if (!empty($_COOKIE['fontsize'])) {
    $fontsize = $_COOKIE['fontsize'];
  } elseif (!empty($_COOKIE['fontsizeR'])) {
    $fontsize = $_COOKIE['fontsizeR'];
  } else {
    $fontsize = 101;
  }

      if (!empty($_COOKIE['styleswitch'])) {
        $design = $_COOKIE['styleswitch'];
      } elseif (!empty($_COOKIE['styleswitchR'])) {
        $design = $_COOKIE['styleswitchR'];
      } else {
        $design = 001;
      }

      switch ($design) {
        case 001:
        $bg_color = "FFFFFF";
        $font_color = "000000";
        $img_folder = "light";
        break;
      case 002:
        $bg_color = "000000";
        $font_color = "FFFFFF";
        $img_folder = "dark";
        break;
      }

echo '<style type="text/css">'."\n<!--\n";
list($usec, $sec) = explode(' ',microtime());
print('   /* '.((float)$usec + (float)$sec)." */\n");
?>
    html {
      font-size: <?php print($fontsize); ?>%;
    }

    body {
      color: #<?php print($font_color); ?>;
      background-color: #<?php print($bg_color); ?>;
    }

    #title {
      font-size: 100%
      background-image:url(../images/<?php print($img_folder); ?>/title.png);
    }
	
<?php
echo " -->\n</style>";?>
Erstellt ein neues leeres Layout und fügt einen Container ein

Code: Alles auswählen

<container id="1" name="Text" types="Content" default="">Content</container>
Genau wie thanatos habe auch ich die fontsize.inc.php erstellt, unter cms/includes/fontsize.inc.php abgespeichert und in die cms/front_content.php eingebunden!

Code: Alles auswählen

include ("includes/fontsize.inc.php");
Bevor Ihr nun das weiter macht, müsst ihr ein zusätzliches Modul erstellen. Ich habe das Modul Styleswitcher fontset genannt.
MODUL: Styleswitcher fontset

Code: Alles auswählen

<?php

    if (!empty($_GET['uri'])) {
        Header('Location: http://'.$_SERVER['HTTP_HOST'].$_GET['uri']);
    } elseif (!empty($_SERVER['HTTP_REFERER'])) {
        Header('Location: '.$_SERVER['HTTP_REFERER']);
    } else {
        print('Fehler');
    }

?> 
Erstellt ein neues Template mit dem soeben erstellten Layout und dem Modul Styleswitcher fontset
Erstellt einen neuen Kategoriepunkt z.B. bei "Systemseiten" und zieht dort das gerade erstellte Template an.
Erstellt einen Artikel in dieser Kategorie.
Genau wie thanatos hab ich danach das Modul Switcher erstellt

Code: Alles auswählen

<?php
    /***********************************************
    * MODUL FONT- AND STYLESWITCHER
    *
    * Area        :     Output
    * Description :     Barrierefreie Navigation zum Anpassen der Schriftgröße und des Kontrasts
    * Author      :     Lennart Brand
    * Copyright   :     mosaik | individual service
    * Mail        :     info@mosaik-is.de
    * Created     :     06-11-2008
    * Version     :     0.9 beta
    ************************************************/

      $actionfont = array("inc","base","dec");
      $namefont = array("fontbigger","fontbase","fontsmaller");
      $titlefont = array("vergr&ouml;&szlig;ern","zur&uuml;cksetzen","verkleinern");
      $actionstyle = array("light","dark");
      $namestyle = array("lightdesign","darkdesign");
      $titlestyle = array("helles","dunkles");
      $redirect_artid = 324; /* ID zum weiterleitenden Artikel */

      $document_ref_font = 'front_content.php?idcat='.$redirect_artid.'&font=';
      $document_ref_style = 'front_content.php?idcat='.$redirect_artid.'&style=';
     
      for($i=0;$i<3;$i++){
        toFontTpl($tpl, $document_ref_font, $actionfont[$i], $namefont[$i], $titlefont[$i]);
      }
      $sCatsFont = $tpl->generate('templates/navigation_barrierfree_item.html', true, false);
      $tpl->reset();

      for($i=0;$i<2;$i++){
        toStyleTpl($tpl, $document_ref_style, $actionstyle[$i], $namestyle[$i], $titlestyle[$i]);
      }
      $sCatsStyle = $tpl->generate('templates/navigation_barrierfree_item.html', true, false);
      $tpl->reset();

      $tpl->set('s', 'itemsfont', $sCatsFont);
      $tpl->set('s', 'itemsstyle', $sCatsStyle);
      $tpl->generate('templates/navigation_barrierfree_container.html');

    function toFontTpl(&$oTpl, $url, $action, $name, $title) {
      $oTpl->set('d', 'url', $url);
      $oTpl->set('d', 'action', $action);
      $oTpl->set('d', 'label', $name);
      $oTpl->set('d', 'title', "Schriftgr&ouml;&szlig;e ".$title);
      $oTpl->next();
    }

    function toStyleTpl(&$oTpl, $url, $action, $name, $title) {
      $oTpl->set('d', 'url', $url);
      $oTpl->set('d', 'action', $action);
      $oTpl->set('d', 'label', $name);
      $oTpl->set('d', 'title', $title." Design");
      $oTpl->next();
    }
    ?>
und es Style&Font Switcher genannt. Im Gegensatz zum Originalmodul ist mein Code ein wenig abgeändert. Zusätzlich hab habe ich die Variable

Code: Alles auswählen

$redirect_artid = 324; /* ID zum weiterleitenden Artikel */
eingebaut. Das ist die Artikel-ID des oben erstellten Artikels.

Erstellt danach die Templates und zieht fügt das Modul Style&Font Switcher ein. Sollte ich nichts vergessen haben - müsste es so funktionieren - zumindest bei mir tut es das!

Grüße
Matt

GaMbIt_
Beiträge: 674
Registriert: Do 16. Mär 2006, 16:17
Kontaktdaten:

Re: Styleswitcher: Schriftgröße und Kontrast anpassen

Beitrag von GaMbIt_ » Fr 13. Mär 2009, 16:09

Sehr coole Sache...
Das wäre doch was fürs Contenido Wiki .. oder?

www.contenido-wiki.org
Nützliche Contenido Infos gibts hier: Contenido Wiki

thanatos
Beiträge: 23
Registriert: So 5. Feb 2006, 18:00
Wohnort: Hannover
Kontaktdaten:

Re: Styleswitcher: Schriftgröße und Kontrast anpassen

Beitrag von thanatos » Sa 14. Mär 2009, 20:36

Moin moin!

Sorry, dass ich mich um das Modul nicht mehr kümmern konnte. Habe einfach keine Zeit gefunden. Deshalb ein um so größerer Dank an matt.loker, dass er sich dessen angenommen hat! Die Idee mit der "ID zum weiterleitenden Artikel" im letzten Modul finde ich ziemlich elegant, weil sie das lästige Auflösen der URL erspart. Den CSS-Code über ein Modul ins Template einzubinden hatte ich zuerst auch überlegt, hab es dann aber aus Gründen der SEO wieder verworfen. Das wäre mir noch zu viel unnötiger Code vor dem eigentlichen Inhalt, weswegen eventuell Crawler abspringen könnten, befürchtete ich. Aber wenn es dadurch läuft, dann ist das ein unbedeutenderer Grund.

Also alles in allem: Schaut sehr gut aus, matt! Ich hab's noch nicht ausprobiert, weil meine Modul-Version auch in der Contenido 4.8.8 läuft, aber es scheint eine gute Alternative zu sein, falls die ursprüngliche Variante nicht funktioniert. (Leider kann ich keinen Link auf mein aktuelles Projekt setzen, weil es sich noch in der Entwicklungsphase befindet und der Kunde das nicht wünscht.)
Freddy hat geschrieben:Warning: Cannot modify header information - headers already sent by (output started at /www/.../cms/front_content.php:963) in /www/.../cms/includes/fontsize.inc.php on line 46 und 48,50,51,52,53.
Das Problem kommt mir dunkel bekannt vor. Ich meine, das auch mal gehabt zu haben - entweder, weil ich in einem PHP-Code einen Zeilenumbruch vor dem abschließenden "?>" hatte oder weil ich einen PHP-Code mehrfach eingebunden habe. Im Forum gibt's zu der Fehlermeldung als Suchbegriff ein paar gute Treffer. Leider kann ich den Fehler nicht reproduzieren und auch nicht auf einen konkreten Auslöser eingrenzen.
Freddy hat geschrieben:mh, ist es überhaupt mit Contenido 4.8.10 nach dieser Beschreibung möglich.
Das weiß ich leider nicht, weil ich auf der Contenido 4.8.8 nach dem Sicherheitsprinzip "never change a running system (if not too necessary)" arbeite :wink:
matt.loker hat geschrieben:Hat das Modul jemand unter 4.8.8 zum Laufen gebracht?
Ja, ich verwende den Styleswitcher in einem aktuellen Projekt.

Ich hoffe, dass Matts Veränderung eine gute Lösung für deine Probleme bringt, Freddy. Ich fürchte, ich muss das Modul bis auf weiteres ungepflegt lassen, weil sich die zeitliche Situation bei mir nicht in absehbarer Zukunft ändern wir.

Beste Grüße
Thanatos
Sie sind lustig. Sie gefallen mir. Und jetzt RAUS! (Horst Evers)

busi
Beiträge: 82
Registriert: Mi 18. Sep 2002, 13:36
Kontaktdaten:

Re: Styleswitcher: Schriftgröße und Kontrast anpassen

Beitrag von busi » Sa 23. Mai 2009, 12:07

Hallo zusammen

Nachdem ich das Modul bei mir installiert hatte, lief es zuerst auch nicht. Zuerst war da die Meldung von wegen "header already sent". Als ich das gefixt hatte, kam ich zum nächsten Problem, dass beim Klick auf die Links nichts geschah. Die Lösung (mindestens bei mir) war denkbar einfach.

Weder in der angepassten "style.php" noch in der Datei "fontsize.inc.php" darf es vor

Code: Alles auswählen

<?php bzw. ?>
Leerzeichen haben. Sobald ich die entfernt hatte, lief alles prima sowohl mit IE, Mozilla als auch Opera. Die Leerzeichen, haben sich vermutlich bei Copy & Paste reingeschlichen.

Ich hoffe die Infos waren hilfreich.
busi

"...please forgive me, now I see that I've been blind..."

Gesperrt