Nachladen von CSS in Joomla


Mit dieser Methode lässt sich ein CSS-Switch erstellen.
Wichtig vor allem für Barrierefreie Webseiten. Damit kann der Kontrast mittels einem Link verändert bzw. überschrieben werden. Funktioniert evtl. nicht bei eingeschalteten System Cache .

Eine neue CSS- Datei erstellen(in meinem Fall kontrast.css) und die Bereiche die verändert werden sollen festlegen.
Zur Sicherheit die Anweisungen noch mit dem Zusatz !important auszeichnen.
z.B. 

body{
color: #fff !important; background: #000 !important;
}

Im Body Tag oder im Head- Bereich diesen JavaScript  einfügen.

<script type="text/javascript">// <![CDATA[
function cssSwitch() {
var e = document.createElement("link");
e.type = "text/css";
e.rel = "stylesheet";
e.href = "<?php echo $this->baseurl ?>
/templates/<?php echo $this->template ?>/css/kontrast.css";
document.getElementsByTagName("head")[0].appendChild(e);
}
// ]]></script>


Die Links habe ich in einem Neuen Modul integriert:
Modul: Eigene Inhalte (Leeres Modul)
In dem Modul kann man auch gleich die Style-Formatierungen festlegen.
Oder man bindet das HTML in einer Klasse oder Div und hat damit die Möglichkeiten in der CSS-Datei auf das äußere Einfluss zunehmen.

<a href=<?php echo $this->baseurl ?>"javascript:cssSwitch()">Kontrast+</a>

Sollte der HTML-Editor den HTML-Code ignorieren.
Muss man es im Plugin z.B.  Editor - TinyMCE  explizit erlauben.
Eine andere Möglichkeit ist das Joomla-Plugin Sourcer zu verwenden.



Um die Möglichkeit eines Reset anzubieten: 

<a href=<?php echo $this->baseurl ?>"javascript:location.reload()">Reset</a>
Damit wird die Seite wieder Neu geladen.

Der Code für die  formatierten Links sehen bei mir zum Beispiel so aus:

<p style="float: right; "><a href=<?php echo $this->baseurl ?>"javascript:cssNachladen()">
<span style="font-size: 1.4em; color:#fff; margin-right: 1em ">Kontrast+</span></a><br />
<a href=<?php echo $this->baseurl ?>"javascript:location.reload()">Reset</a></p>

 

Achtung! Bei Joomla 3 funktioniert das Script nicht mehr in einem Modul heraus.
In der index.php muss die absolute Pfadangabe gemacht werden.


<script type="text/javascript">
function cssNachladen() {
var e = document.createElement("link");
e.type = "text/css";
e.rel = "stylesheet";
e.href = "<?php echo $this->baseurl ?>/templates/meinTemplate/<?php echo $this->
template/meinTemplate ?>/css/kontrast.css";

document.getElementsByTagName("head")[0].appendChild(e);
}
</script>


Der Link muss ebenfalls in der Index.php an gegebener Stelle integriert werden.
In meinem Fall im Website-content :
<p style="float: right; "><a href=<?php echo $this->baseurl ?>
"javascript:cssNachladen()">
<span style="font-size: 1em; color:#000; margin-right: 1em ">Kontrast+</span></a><br />
<a href=<?php echo $this->baseurl ?>"javascript:location.reload()"><span style="font-size: 0.8em; color: #2E8B57" >Reset</span></a></p>