Horizontale Navigation Reinfolge ändern

Gesperrt
Dino23
Beiträge: 38
Registriert: Fr 13. Aug 2004, 15:13
Kontaktdaten:

Horizontale Navigation Reinfolge ändern

Beitrag 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!
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag 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>";
*** make your own tools (wishlist :: thx)
Dino23
Beiträge: 38
Registriert: Fr 13. Aug 2004, 15:13
Kontaktdaten:

Beitrag 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.
Gesperrt