So ich hab es jetzt!
PHP-Code:
/*MODUL HACK*/
//LEFT
$document = &JFactory::getDocument();
$modules = &JModuleHelper::getModules('left');
$renderer = $document->loadRenderer('module');
//Setze show_left auf false
$show_left = false;
foreach($modules as $mod) {
$foo = $renderer->render($mod);
//gibt es einen Eintrag
if (!empty ($foo)) $show_left = true;
}
//RIGHT
$modules = &JModuleHelper::getModules('right');
$renderer = $document->loadRenderer('module');
//Setze show_left auf false
$show_right = false;
foreach($modules as $mod) {
$foo = $renderer->render($mod);
//gibt es einen Eintrag
if (!empty ($foo)) $show_right = true;
}
if($show_left && !$show_right){$contentlayout="2-cols-left";}
if(!$show_left&& $show_right){$contentlayout="2-cols-right";}
if($show_left && $show_right){$contentlayout="3-cols";}
if(!$show_left && !$show_right){$contentlayout="1-col";}
so $show_right und $show_left ist eigentlich genau das gleiche wie das, was SirDarke geschrieben hat, hier prüft man aber nur die Menüzuweisung.
Mal ein Beispiel wie das geht was SirDarke verlinkt hatte.
PHP-Code:
//Zuweisen ob true oder false
$show_left = $this->countModules('left');
$show_right = $this->countModules('right');
//Prüfe ob Modul right angezeigt werden soll
<?php if ($show_right) : ?>
<div id="column-right">
hier was dann angezeigt werden soll, eigentlich <jdoc:include type="modules" name="right" style="xhtml"/><!--POSITION RIGHT-->
</div>
<?php endif;?>
//andere Variante wäre, dann spart man sich den schritt oben.
<?php if ($this->countModules('right')) : ?>
<div id="column-right">
<jdoc:include type="modules" name="right" style="xhtml"/><!--POSITION RIGHT-->
</div>
<?php endif;?>
Nachteil ist jetzt bei der Variante, das er auch den Platzhalter, also den div setzt, wenn das Modul auf der Position right keinen Inhalt hat.
Das ganze kann ich umgehen, wenn ich überprüfe, ob das Modul nicht nur dem Menü zugewiesen wurde sondern auch Prüfe ob es einen Inhalt hat und erst dann auch das Div einblenden lass.
Lesezeichen