Skip to main content

Nachladen von CSS Dateien bei Joomla! Webseiten

Melanie Petersen
16. August 2013

Hier werden ein paar Wege beschrieben wie man CSS Dateien nachladen kann wenn der Besucher beispielsweise eine bestimmte Komponente besucht oder eine bestimmte Seite aufruft. Der Artikel "Entfernen von CSS- und JS-Dateien aus dem Header von Joomla!" beschreibt dann das entfernen unerwünschter Dateien.

Nehmen wir einmal an wir wollen auf der Startseite unserer Joomla Webseite einen bestimmten Inhalt nachladen. Dieser Inhalt kann Beispielsweise eine CSS Datei sein und soll ausschließlich auf der Startseite angezeigt werden.

Joomla 1.0

Bei Joomla 1.0 konnte man das oben genannte Beispiel mit Folgendem Quellcode im Template lösen:

<?php
if ($option == 'com_frontpage' || $option == '') {
        echo 'This is the front page';
}
?>

Das "com_frontpage" steht hier beispielhaft für die Komponente Startseite

Joomla 1.5

Bei Joomla 1.5 konnte man das oben genannte Beispiel mit Folgendem Quellcode im Template lösen:

<?php
$menu = & JSite::getMenu();
if ($menu->getActive() == $menu->getDefault()) {
        echo 'This is the front page';
}
?>

Bei dieser Abfrage wird geschaut ob der gewählte (aktive) Menüpunkt als Startseite markiert wurde.

Joomla 2.5 and 3.x series

Hier das selbe Beispiel für Joomla 1.6, 1.7 2.5 und 3.x bei einsprachigen Webseiten:

<?php
$app = JFactory::getApplication();
$menu = $app->getMenu();
if ($menu->getActive() == $menu->getDefault()) {
        echo 'This is the front page';
}
?>

Für mehrsprachige Webseiten kann folgender Code verwendet werden, wenn für jede Sprache ein anderer Inhalt geladen werden soll:

<?php
$app = JFactory::getApplication();
$menu = $app->getMenu();
if ($menu->getActive() == $menu->getDefault( 'en-GB' )) {
        echo 'This is the front page';
}
elseif ($menu->getActive() == $menu->getDefault( 'fr-FR' )) {
        echo 'Accueil';
}
?>

Und für alle mehrsprachigen Joomla Webseiten die bei jeder Sprache den seleben Inhalt nachladen wollen gilt folgender Quelltext:

<?php
$app = JFactory::getApplication();
$menu = $app->getMenu();
$lang = JFactory::getLanguage();
if ($menu->getActive() == $menu->getDefault($lang->getTag())) {
        echo 'This is the front page';
}
else {
        echo 'Accueil';
}
?>

Andere Wege für Joomla 1.6, 1.7, 2.5 und 3.x

CSS für bestemmte Seitenklasse nachladen

Der Folgende Quelltext muss in der index.php des Templates oben geladen werden um die Seitenklasse verwenden zu können.

$pageclass = $params->get( 'pageclass_sfx' ); 

Folgende Abschnitt muss dann in den <head> Bereich der Webseite kopiert werden.

<?php if ($pageclass=="home") { ?>
<script src="/%3C?php_echo_%24templateUrl%3B_%3F%3E%2Fjquery_reveal_js="></script>
<?php } ?>
CSS laden bei einer bestimmten Menüpunkt
$menu =&JSite::getMenu();
$menuItem = $menu->getActive();
$Itemid = $menuItem->id;if($Itemid!=1){
$doc->addStyleSheet($pluginAssetsUrl .'/css/aecuserpage.css');}

Bei "$Itemid!=1" muss die "1" durch die Id des gewünschten Menüpunktes ersetzt werden.

CSS Datei für eine bestimmte Komponente laden
if(JRequest::getCmd('option')=='com_k2'){
        $doc->addStyleSheet($pluginAssetsUrl .'/css/aecuserpage.css');}
CSS Datei alle Punkte eine bestimmten Menüs laden
<?php
$menuID =JSite::getMenu()->getActive()->id ;if($menuID =='6'){
   $doc->addStyleSheet($pluginAssetsUrl .'/css/aecuserpage.css');}?>

Bei "$menuID == '6'" muss die "6" durch die Id des gewünschten Menüs ersetzt werden.

CSS bei bestimmter Sprache laden:
$lang =&JFactory::getLanguage();switch($lang){case'en-gb':
$doc->addStyleSheet($pluginAssetsUrl .'/css/aecuserpage.css');break;}
CSS Laden wenn sich ein Benutzer angemeldet hat
$user =&JFactory::getUser();if($user->get('id')==0){//user is logged in
 $doc->addStyleSheet($pluginAssetsUrl .'/css/aecuserpage.css');}
CSS laden beim Aufruf einer bestimmten URL
$u =&JFactory::getURI();if($u=="http://www.example.com/joomla/index.php?task=view&id=12&Itemid=29"){
$doc->addStyleSheet($pluginAssetsUrl .'/css/aecuserpage.css');}