+ Antworten
Ergebnis 1 bis 8 von 8

Thema: Prüfen ob Modulposition leer ist

  1. #1
    Neu an Board Avatar von Niels85
    Registriert seit
    26.01.2009
    Ort
    Buchholz in der Nordheide
    Alter
    26
    Beiträge
    51
    Bedankte sich
    1
    Erhielt 9 Danksagungen
    in 6 Beiträgen

    Standard Prüfen ob Modulposition leer ist

    Hi zusammen,

    ich hab ein drei spalten Template.

    Wie kann ich prüfen, ob eine Modulposition Inhalt enthält, nicht ob Sie aktiviert ist für den Link.

    Folgendes Problem: Ich habe oben ein Menü von der Ebene 0 bis 2 und in der Linken Spalte will ich dann das Menü von der Ebene 2 bis unendlich anzeigen lassen.

    Aber ich will jetzt nicht immer gucken wo ist die Ebene 2 vorhanden und dann immer das Modul anzeigen lassen wo es hinkommt.

    Hat hier jemand Erfahrungen oder eine Lösung?

    PHP-Code:
    <?php 

    $show_left 
    $this->countModules('left');
    $show_right $this->countModules('right');

    if((
    $this->countModules("left") && !$this->countModules("right"))){$contentlayout="2-cols-left";}
    if((!
    $this->countModules("left")&& $this->countModules("right"))){$contentlayout="2-cols-right";}
    if((
    $this->countModules("left") && $this->countModules("right"))){$contentlayout="3-cols";}
    if((!
    $this->countModules("left")&& !$this->countModules("right"))){$contentlayout="1-col";}
    ?>
    PHP-Code:
        <div id="container-row">
            <div id="container"> 
                <?php if ($show_left) : ?>
                <div id="column-left">
                    <jdoc:include type="modules" name="left" style="xhtml"/><!--POSITION LEFT-->
                </div>
                <?php endif;?>
                
                <?php if ($show_right) : ?>
                <div id="column-right">
                    <jdoc:include type="modules" name="right" style="xhtml"/><!--POSITION RIGHT-->
                </div>
                <?php endif;?>
                
                <div id="container-<?php echo $contentlayout ?>">
                    <?php if ($this->getBuffer('message')) : ?>
                    <div id="jmessage">
                        <h4><?php echo JText::_('Message'); ?></h4>
                        <div class="jmessage"><jdoc:include type="message" /></div>
                    </div>
                    <?php endif; ?>
                    
                    <jdoc:include type="component" />
                </div><!--container-cols-->
            </div><!--container-->            
        </div><!--container-row-->
    Geändert von Niels85 (05.04.2011 um 12:58 Uhr)

  2. #2
    Gehört zum Inventar Avatar von SirDrake
    Registriert seit
    29.08.2006
    Ort
    Köln
    Beiträge
    6.268
    Bedankte sich
    164
    Erhielt 2.346 Danksagungen
    in 2.119 Beiträgen

    Standard

    Hallo

    hier hat Axel mal ein tut dazu gemacht
    http://time4joomla.de/tipps-a-tricks...anden-ist.html
    Gruß Fred
    Fragen und Antworten rund um Joomla! FAQ
    Code-Bereinigung abschalten - Unterstütze Joomla

  3. #3
    Neu an Board Avatar von Niels85
    Registriert seit
    26.01.2009
    Ort
    Buchholz in der Nordheide
    Alter
    26
    Beiträge
    51
    Bedankte sich
    1
    Erhielt 9 Danksagungen
    in 6 Beiträgen

    Standard

    Schön das einfach nur die Überschrift gelesen wird SirDrake!

  4. #4
    Gehört zum Inventar Avatar von SirDrake
    Registriert seit
    29.08.2006
    Ort
    Köln
    Beiträge
    6.268
    Bedankte sich
    164
    Erhielt 2.346 Danksagungen
    in 2.119 Beiträgen

    Standard

    oh ja, verzeih meinen Hilfeversuch, wird nicht wieder vorkommen
    Gruß Fred
    Fragen und Antworten rund um Joomla! FAQ
    Code-Bereinigung abschalten - Unterstütze Joomla

  5. #5
    Verbringt hier viel Zeit
    Registriert seit
    18.08.2010
    Ort
    Hier könnte ihre Werbung stehen
    Beiträge
    760
    Bedankte sich
    11
    Erhielt 217 Danksagungen
    in 210 Beiträgen

    Standard

    Um dein Problem zu verstehen.
    Du hast 2 Menüs.
    Einmal das Hauptmenü Ebene 0-2 und ein Split Menü mit den Ebenen 2-Unendlich.
    Du möchtest aber das Splitmenü nur angezeigt haben, wenn Inhalt darin ist.

    Ist es nicht so, dass wenn kein Inhalt da ist dass Menü garnicht erst angezeigt wird ?
    Oder blende das Split menü Modul nur auf den Seiten ein (Im Backend gibts ja die option) wo es angezeigt werden soll.

    Sollte die Website von einer Person verwaltet werden, die sich damit nicht ausgkennt und deshalb das Manuelle einblenden wegfällt, müsstes du mal in der PhP Datei wo das Menü generiert wird nachschaun. Welcher ausdruck dazu dient das Menü auszugeben (warscheinlich ein Array) dann könntest du ja mit bissel PhP die sache eventuell lösen.
    Geändert von Plopo23 (05.04.2011 um 10:32 Uhr)
    Freundliche Grüße Michael

    Der "Danke" Button sieht nicht nur schön aus, er ist auch zum anklicken da.
    FAQ Joomla 1.5 | J! 1.5 Extensions | Template erstellen Tutorial

  6. #6
    Wohnt hier Avatar von chr-hl
    Registriert seit
    28.07.2009
    Ort
    Lübeck
    Beiträge
    3.044
    Bedankte sich
    57
    Erhielt 964 Danksagungen
    in 950 Beiträgen

    Standard

    Dann verrate uns doch, was Du genau bezweckst.

    Christian
    Konnte ich Dir helfen - dann freut ein Klick auf "Danke" bzw. "Thanks"

    Joomla - FAQs / Dein Joomla-Level / Problem gelöst? Bitte so markieren

  7. #7
    Neu an Board Avatar von Niels85
    Registriert seit
    26.01.2009
    Ort
    Buchholz in der Nordheide
    Alter
    26
    Beiträge
    51
    Bedankte sich
    1
    Erhielt 9 Danksagungen
    in 6 Beiträgen

    Standard

    Genau! Es gib die Option im Backend wo man das einstellen kann "Menüzuweisung". Nur ich mach das für einen Kunden und ich will das Benutzerfreundlich haben. Wenn er nämlich jetzt für ein Menü Punkt ein Submenü anlegt müsste er ja wieder zum Modul gehen und es erneut zuweisen.

    Ich hab glaub ich gerade einen Weg gefunden. Ich rendere oben das Menü und Prüfe ob content vorhanden ist. So kann ich nämlich das Submenü auf allen Seiten anzeigen lassen wird aber dann nur angezeigt, wenn es auch Inhalt hat.

    Werde berichten!

  8. #8
    Neu an Board Avatar von Niels85
    Registriert seit
    26.01.2009
    Ort
    Buchholz in der Nordheide
    Alter
    26
    Beiträge
    51
    Bedankte sich
    1
    Erhielt 9 Danksagungen
    in 6 Beiträgen

    Standard

    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.
    Geändert von Niels85 (05.04.2011 um 12:56 Uhr) Grund: Hatte einen Fehler oben für right

  9. Erhielt Danksagungen von:


+ Antworten

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein