Seite 1 von 1

Horizontale Navigation Reinfolge ändern

Verfasst: Sa 21. Jul 2007, 15:57
von Dino23
Hallo an Alle,
Ich nutze diese Horizontale Navigation von Jan Lengowski: http://www.contenido.de/forum/viewtopic ... 59e1c1509c

Code: Alles auswählen

<?php 

/*********************************************** 
* CONTENIDO MODUL - OUTPUT 
* 
* Modulname   :     Navigation 1.1 
* Author      :     Jan Lengowski 
* Copyright   :     Contenido - four for business 
* Created     :     15-05-2003 
* Modified    :     04-05-2005 by Winfried Riess 
************************************************/ 

if ( !is_object($db2) ) { 
    $db2 = new DB_Contenido; 
} 

/** 
 * Check if a category is child 
 * of another category 
 * 
 * @return boolean true/false 
 * @author Jan Lengowski <Jan.Lengowski@4fb.de> 
 * @copyright four for business AG 2003 
 */ 
if (!function_exists("catIsChildOf")) 
{ 
    function catIsChildOf($id, $idparent) { 
    
        global $cfg, $client, $lang; 
    
        $db = new DB_Contenido; 
    
        $parent = $id; 
    
        while ( $parent != 0 ) { 
    
            $sql = "SELECT 
                        a.parentid 
                    FROM 
                        ".$cfg["tab"]["cat"]." AS a, 
                        ".$cfg["tab"]["cat_lang"]." AS b 
                    WHERE 
                        a.idclient  = '".$client."' AND 
                        b.idlang    = '".$lang."' AND 
                        a.idcat     = b.idcat AND 
                        a.idcat   = '".$parent."'"; 
    
            $db->query($sql); 
            $db->next_record(); 
    
            $parent = $db->f("parentid"); 
    
            if ($parent == $idparent) { 
                return true; 
            } 
    
        } 
    
        return false; 
    
    } 
} 

if ( catIsChildOf($idcat, "CMS_VALUE[0]") ) { 
    $sel_idcat = $idcat; 
} else { 
    $sel_idcat = "CMS_VALUE[0]"; 
} 

/* Include Template Class */ 
include_once($cfg["path"]["contenido"] . 'classes/class.template.php'); 

/** 
 * Array storing alle the 
 * navigation data 
 */ 
$navitems = array(); 


/* Template Instance */ 
$tpl = new Template; 

/** 
 * Recursive function for creating 
 * the navigation array 
 * @param Int $idcat Category id 
 */ 
function nav($idcat) { 

        global $navitems, $client, $lang, $cfg; 

        $db  = new DB_Contenido; 
        $db2 = new DB_Contenido; 

        $sql = "SELECT parentid FROM ".$cfg["tab"]["cat"]." WHERE idcat = '$idcat'"; 

        $db->query($sql); 
        $db->next_record(); 

        $parentid = $db->f("parentid"); 

        if ( $parentid == 0 ) { 

           if ( $idcat != "CMS_VALUE[0]" ){ 

                $navitems = array(); 
              
                $sql = "SELECT 
                            A.idcat, 
                            C.name 
                        FROM 
                            ".$cfg["tab"]["cat_tree"]." AS A, 
                            ".$cfg["tab"]["cat"]." AS B, 
                            ".$cfg["tab"]["cat_lang"]." AS C 
                        WHERE 
                            A.idcat     = B.idcat   AND 
                            B.idcat     = C.idcat   AND 
                            B.idclient  = '$client' AND 
                            C.idlang    = '$lang'   AND 
                            C.visible   = '1'       AND 
                            B.parentid  = 'CMS_VALUE[0]' 
                        ORDER 
                            BY A.idtree"; 

                      $db->query($sql); 

                      while ($db->next_record()) { 

                            /* Check for external redirects... */ 
                            $sql = "SELECT 
                                        a.external_redirect AS ext 
                                    FROM 
                                        ".$cfg["tab"]["art_lang"]." AS a, 
                                        ".$cfg["tab"]["cat_art"]." AS b, 
                                        ".$cfg["tab"]["cat"]." AS c 
                                    WHERE 
                                        b.idcat     = '".$db->f("idcat")."' AND 
                                        b.is_start  = '1' AND 
                                        c.idclient  = '".$client."' AND 
                                        c.idcat     = b.idcat AND 
                                        a.idart     = b.idart AND 
                                        a.idlang    = '".$lang."'"; 

                            $db2->query($sql); 
                            $db2->next_record(); 

                            $target = ( $db2->f("ext") == 0 ) ? '_self' : '_blank'; 

                            $navitems[$db->f("idcat")] = array("idcat"      => $db->f("idcat"), 
                                                                "name"      => $db->f("name"), 
                                                                "target"    => $target); 
                      } 

           } 
            
           return true; 
        } 

        $sql = "SELECT 
                    A.idcat, 
                    C.name 
                FROM 
                    ".$cfg["tab"]["cat_tree"]." AS A, 
                    ".$cfg["tab"]["cat"]." AS B, 
                    ".$cfg["tab"]["cat_lang"]." AS C 
                WHERE 
                    A.idcat     = B.idcat   AND 
                    B.idcat     = C.idcat   AND 
                    B.idclient  = '$client' AND 
                    C.idlang    = '$lang'   AND 
                    C.visible   = '1'       AND 
                    B.parentid  = '$parentid' 
                ORDER BY 
                    A.idtree"; 

        $db->query($sql); 

        while ($db->next_record()) { 

                /* Check for external redirects... */ 
                $sql = "SELECT 
                            a.external_redirect AS ext 
                        FROM 
                            ".$cfg["tab"]["art_lang"]." AS a, 
                            ".$cfg["tab"]["cat_art"]." AS b, 
                            ".$cfg["tab"]["cat"]." AS c 
                        WHERE 
                            b.idcat     = '".$db->f("idcat")."' AND 
                            b.is_start  = '1' AND 
                            c.idclient  = '".$client."' AND 
                            c.idcat     = b.idcat AND 
                            a.idart     = b.idart AND 
                            a.idlang    = '".$lang."'"; 

                $db2->query($sql); 
                $db2->next_record(); 

                $target = ( $db2->f("ext") == 0 ) ? '_self' : '_blank'; 
                
                $tmp_nav[$db->f("idcat")] = array("idcat"   => $db->f("idcat"), 
                                                  "name"    => $db->f("name"), 
                                                  "target"  => $target); 
        } 

        $tmp_nav[$idcat]["sub"] = $navitems; 
        $navitems = $tmp_nav; 

        /* Function call */ 
        nav($parentid); 

}  // end function 

$sql = "SELECT 
            A.idcat, 
            C.name 
        FROM 
            ".$cfg["tab"]["cat_tree"]." AS A, 
            ".$cfg["tab"]["cat"]." AS B, 
            ".$cfg["tab"]["cat_lang"]." AS C 
        WHERE 
            A.idcat     = B.idcat   AND 
            B.idcat     = C.idcat   AND 
            B.idclient  = '$client' AND 
            C.idlang    = '$lang'   AND 
            C.visible   = '1'       AND 
            B.parentid  = '$sel_idcat' 
        ORDER BY 
            A.idtree"; 

$db->query($sql); 

while ( $db->next_record() ) { 

        /* Check for external redirects... */ 
        $sql = "SELECT 
                    a.external_redirect AS ext 
                FROM 
                    ".$cfg["tab"]["art_lang"]." AS a, 
                    ".$cfg["tab"]["cat_art"]." AS b, 
                    ".$cfg["tab"]["cat"]." AS c 
                WHERE 
                    b.idcat     = '".$db->f("idcat")."' AND 
                    b.is_start  = '1' AND 
                    c.idclient  = '".$client."' AND 
                    c.idcat     = b.idcat AND 
                    a.idart     = b.idart AND 
                    a.idlang    = '".$lang."'"; 

        $db2->query($sql); 
        $db2->next_record(); 

        $target = ( $db2->f("ext") == 0 ) ? '_self' : '_blank'; 

        $navitems[$db->f("idcat")] = array("idcat"  => $db->f("idcat"), 
                                           "name"   => $db->f("name"), 
                                           "target" => $target); 
} 

/* Create Navigation Array */ 
nav($sel_idcat); 

/* Start Output buffer */ 
ob_start(); 

echo '<table cellspacing="0" cellpadding="0" border="0"><tr><td align="left" valign="top" bgcolor="#FFFFFF">'; 

$hochzaehlen = 0; 
$aktive = 0; 

foreach ($navitems as $key => $data) {    

    /* 1. Navigations Ebene */ 
    $tpl->reset(); 
    $tpl->set('d', 'NAME',  $data['name']); 
    $tpl->set('d', 'TARGET', $data['target']); 
    $tpl->set('d', 'HREF',  $sess->url('front_content.php?idcat='.$data['idcat'])); 
    $tpl->set('d', 'ZAEHLER', 'wert' . $hochzaehlen++); 
    $tpl->next(); 

    if ($idcat == $data['idcat'] || is_array($data['sub'])) { 
           $aktive = $hochzaehlen - 1; 
           $tpl->generate('templates/navfirst_on.html'); 
    } else { 
           $tpl->generate('templates/navfirst_off.html'); 
    } 
} // end foreach 

echo "</td></tr></table>"; 
echo '<table cellspacing="0" cellpadding="0" border="0"><tr><td align="left" valign="top" bgcolor="#FFFFFF">'; 

$hoch2zaehlen = 0; 
$aktive2 = 0; 

// Hier wird das Einrücken des 1. Untermenüs generiert 

for ($leerstelle=0; $leerstelle < $aktive; $leerstelle++) { 
    $tpl->generate('templates/navplaceholder.html'); 
} 

foreach ($navitems as $key => $data) { 
    if (is_array($data['sub'])) { 

        foreach ($data['sub'] as $key => $data) { 

            /* 2. Navigations Ebene */ 
            $tpl->reset(); 
            $tpl->set('d', 'NAME',  $data['name']); 
            $tpl->set('d', 'TARGET', $data['target']); 
            $tpl->set('d', 'HREF',  $sess->url('front_content.php?idcat='.$data['idcat'])); 
            $tpl->set('d', 'ZAEHLER2', 'wert2' . $hoch2zaehlen++); 
            $tpl->next(); 


            if ($idcat == $data['idcat'] || is_array($data['sub'])) { 
                    $aktive2 = $hoch2zaehlen - 1; 
                    $tpl->generate('templates/navsecond_on.html'); 
            } else { 
                    $tpl->generate('templates/navsecond_off.html'); 
            } 

} // end foreach 

echo "</td></tr></table>"; 
echo '<table cellspacing="0" cellpadding="0" border="0"><tr><td align="left" valign="top" bgcolor="#FFFFFF">'; 

$hoch3zaehlen = 0; 

// Hier wird das Einrücken des 2. Untermenüs generiert 

for ($leerstelle2=0; $leerstelle2 < $aktive2 + $aktive; $leerstelle2++) { 
      $tpl->generate('templates/navplaceholder.html'); 
} 

foreach ($navitems as $key => $data) { 
            if (is_array($data['sub'])) { 

              foreach ($data['sub'] as $key => $data) { 
                if (is_array($data['sub'])) { 

                  foreach ($data['sub'] as $key => $data) { 

                    /* 3. Navigations Ebene */ 
                    $tpl->reset(); 
                    $tpl->set('d', 'NAME',  $data['name']); 
                    $tpl->set('d', 'TARGET', $data['target']); 
                    $tpl->set('d', 'HREF',  $sess->url('front_content.php?idcat='.$data['idcat'])); 
            $tpl->set('d', 'ZAEHLER3', 'wert3' . $hoch3zaehlen++); 
                    $tpl->next(); 

                    if ($idcat == $data['idcat']) { 
                        $tpl->generate('templates/navthird_on.html'); 
                    } else { 
                        $tpl->generate('templates/navthird_off.html'); 
                    } 

                } // end foreach 
                } // end if 
               } // end foreach 
            } // end if 

        } // end foreach 

    } // end if 

} // end foreach 

 echo '</td></tr></table>'; 

/* Read out buffer */ 
$html = ob_get_contents(); 

/* Clean buffer */ 
ob_end_clean(); 

/* Output buffer-contents */ 
echo $html; 

?> 
Diese Stellt das Menu so dar: Hauptkategorie >> Untermenu 1 >> Untermenu 2

Ich habe jetzt verzweifelt versucht das ganze umzustellen auf Untermenu 2 >> Untermenu 1 >> Hauptmenu also so das das Hauptmenu ganz unten steht.

Leider hab ich es nicht hinbekommen.

Es wäre super wenn mir jemand helfen könnte bevor ich noch verzweifle.

Vielen Dank!

Verfasst: Di 24. Jul 2007, 07:09
von emergence
ändern der ausgabe reihenfolge schon versucht ?

anstelle von

Code: Alles auswählen

echo '<table cellspacing="0" cellpadding="0" border="0"><tr><td align="left" valign="top" bgcolor="#FFFFFF">'; 

$hochzaehlen = 0; 
$aktive = 0; 

foreach ($navitems as $key => $data) {    

    /* 1. Navigations Ebene */ 
    $tpl->reset(); 
    $tpl->set('d', 'NAME',  $data['name']); 
    $tpl->set('d', 'TARGET', $data['target']); 
    $tpl->set('d', 'HREF',  $sess->url('front_content.php?idcat='.$data['idcat'])); 
    $tpl->set('d', 'ZAEHLER', 'wert' . $hochzaehlen++); 
    $tpl->next(); 

    if ($idcat == $data['idcat'] || is_array($data['sub'])) { 
           $aktive = $hochzaehlen - 1; 
           $tpl->generate('templates/navfirst_on.html'); 
    } else { 
           $tpl->generate('templates/navfirst_off.html'); 
    } 
} // end foreach 

echo "</td></tr></table>"; 
echo '<table cellspacing="0" cellpadding="0" border="0"><tr><td align="left" valign="top" bgcolor="#FFFFFF">'; 

$hoch2zaehlen = 0; 
$aktive2 = 0; 

// Hier wird das Einrücken des 1. Untermenüs generiert 

for ($leerstelle=0; $leerstelle < $aktive; $leerstelle++) { 
    $tpl->generate('templates/navplaceholder.html'); 
} 

foreach ($navitems as $key => $data) { 
    if (is_array($data['sub'])) { 

        foreach ($data['sub'] as $key => $data) { 

            /* 2. Navigations Ebene */ 
            $tpl->reset(); 
            $tpl->set('d', 'NAME',  $data['name']); 
            $tpl->set('d', 'TARGET', $data['target']); 
            $tpl->set('d', 'HREF',  $sess->url('front_content.php?idcat='.$data['idcat'])); 
            $tpl->set('d', 'ZAEHLER2', 'wert2' . $hoch2zaehlen++); 
            $tpl->next(); 


            if ($idcat == $data['idcat'] || is_array($data['sub'])) { 
                    $aktive2 = $hoch2zaehlen - 1; 
                    $tpl->generate('templates/navsecond_on.html'); 
            } else { 
                    $tpl->generate('templates/navsecond_off.html'); 
            } 

} // end foreach 

echo "</td></tr></table>"; 
echo '<table cellspacing="0" cellpadding="0" border="0"><tr><td align="left" valign="top" bgcolor="#FFFFFF">'; 

$hoch3zaehlen = 0; 

// Hier wird das Einrücken des 2. Untermenüs generiert 

for ($leerstelle2=0; $leerstelle2 < $aktive2 + $aktive; $leerstelle2++) { 
      $tpl->generate('templates/navplaceholder.html'); 
} 

foreach ($navitems as $key => $data) { 
            if (is_array($data['sub'])) { 

              foreach ($data['sub'] as $key => $data) { 
                if (is_array($data['sub'])) { 

                  foreach ($data['sub'] as $key => $data) { 

                    /* 3. Navigations Ebene */ 
                    $tpl->reset(); 
                    $tpl->set('d', 'NAME',  $data['name']); 
                    $tpl->set('d', 'TARGET', $data['target']); 
                    $tpl->set('d', 'HREF',  $sess->url('front_content.php?idcat='.$data['idcat'])); 
            $tpl->set('d', 'ZAEHLER3', 'wert3' . $hoch3zaehlen++); 
                    $tpl->next(); 

                    if ($idcat == $data['idcat']) { 
                        $tpl->generate('templates/navthird_on.html'); 
                    } else { 
                        $tpl->generate('templates/navthird_off.html'); 
                    } 

                } // end foreach 
                } // end if 
               } // end foreach 
            } // end if 

        } // end foreach 

    } // end if 

} // end foreach 

 echo '</td></tr></table>'; 
folgendes

Code: Alles auswählen

echo '<table cellspacing="0" cellpadding="0" border="0"><tr><td align="left" valign="top" bgcolor="#FFFFFF">'; 

$hoch3zaehlen = 0; 

// Hier wird das Einrücken des 2. Untermenüs generiert 

for ($leerstelle2=0; $leerstelle2 < $aktive2 + $aktive; $leerstelle2++) { 
      $tpl->generate('templates/navplaceholder.html'); 
} 

foreach ($navitems as $key => $data) { 
            if (is_array($data['sub'])) { 

              foreach ($data['sub'] as $key => $data) { 
                if (is_array($data['sub'])) { 

                  foreach ($data['sub'] as $key => $data) { 

                    /* 3. Navigations Ebene */ 
                    $tpl->reset(); 
                    $tpl->set('d', 'NAME',  $data['name']); 
                    $tpl->set('d', 'TARGET', $data['target']); 
                    $tpl->set('d', 'HREF',  $sess->url('front_content.php?idcat='.$data['idcat'])); 
            $tpl->set('d', 'ZAEHLER3', 'wert3' . $hoch3zaehlen++); 
                    $tpl->next(); 

                    if ($idcat == $data['idcat']) { 
                        $tpl->generate('templates/navthird_on.html'); 
                    } else { 
                        $tpl->generate('templates/navthird_off.html'); 
                    } 

                } // end foreach 
                } // end if 
               } // end foreach 
            } // end if 

        } // end foreach 

    } // end if 

} // end foreach 

echo '</td></tr></table>';
echo '<table cellspacing="0" cellpadding="0" border="0"><tr><td align="left" valign="top" bgcolor="#FFFFFF">'; 

$hoch2zaehlen = 0; 
$aktive2 = 0; 

// Hier wird das Einrücken des 1. Untermenüs generiert 

for ($leerstelle=0; $leerstelle < $aktive; $leerstelle++) { 
    $tpl->generate('templates/navplaceholder.html'); 
} 

foreach ($navitems as $key => $data) { 
    if (is_array($data['sub'])) { 

        foreach ($data['sub'] as $key => $data) { 

            /* 2. Navigations Ebene */ 
            $tpl->reset(); 
            $tpl->set('d', 'NAME',  $data['name']); 
            $tpl->set('d', 'TARGET', $data['target']); 
            $tpl->set('d', 'HREF',  $sess->url('front_content.php?idcat='.$data['idcat'])); 
            $tpl->set('d', 'ZAEHLER2', 'wert2' . $hoch2zaehlen++); 
            $tpl->next(); 


            if ($idcat == $data['idcat'] || is_array($data['sub'])) { 
                    $aktive2 = $hoch2zaehlen - 1; 
                    $tpl->generate('templates/navsecond_on.html'); 
            } else { 
                    $tpl->generate('templates/navsecond_off.html'); 
            } 

} // end foreach 

echo "</td></tr></table>"; 
echo '<table cellspacing="0" cellpadding="0" border="0"><tr><td align="left" valign="top" bgcolor="#FFFFFF">'; 

$hochzaehlen = 0; 
$aktive = 0; 

foreach ($navitems as $key => $data) {    

    /* 1. Navigations Ebene */ 
    $tpl->reset(); 
    $tpl->set('d', 'NAME',  $data['name']); 
    $tpl->set('d', 'TARGET', $data['target']); 
    $tpl->set('d', 'HREF',  $sess->url('front_content.php?idcat='.$data['idcat'])); 
    $tpl->set('d', 'ZAEHLER', 'wert' . $hochzaehlen++); 
    $tpl->next(); 

    if ($idcat == $data['idcat'] || is_array($data['sub'])) { 
           $aktive = $hochzaehlen - 1; 
           $tpl->generate('templates/navfirst_on.html'); 
    } else { 
           $tpl->generate('templates/navfirst_off.html'); 
    } 
} // end foreach 

echo "</td></tr></table>";

Verfasst: Di 24. Jul 2007, 08:50
von Dino23
Hallo emergence,
ja habe ich. funktioniert wenn Hauptnavi und Subnavi da ist.

Ist man allerdings auf Ebene 1 also nur Hauptnavi ohne Subnavi wird gar nichts angezeigt.