Naviation zeigt nur 1.Ebene an

Gesperrt
magickai
Beiträge: 23
Registriert: Do 16. Sep 2004, 20:33
Kontaktdaten:

Naviation zeigt nur 1.Ebene an

Beitrag von magickai »

Hallo,
schlag mich immer noch mit der Navigation herum. Ich habe eine modifizierte Hauptnavigation, die mehrmals in einem Template verwendet werden kann und bei der Auswahl <-- Kein --> auch keine Navi anzeigt. Dies funktioniert auch wunderbar.
Allerdings wird jetzt nicht mehr die 2. Navigationsebene angezeigt. Ich weiß nicht ob ich eventuell etwas gelöscht oder geändert habe (das glaube ich zwar nicht, aber man weiß nie! :? )
Vielleicht kann mir jemand weiterhelfen, da ich nicht mehr weiter weiß!
Hier der Output

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    :     26-05-2003 
************************************************/ 

if ( !is_object($db2) ) { 
    $db2 = new DB_Contenido; 
} 
$catStart = "CMS_VALUE[9000]";

/** 
* 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 
*/ 
function catischildof_mod1($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_mod1($idcat, CMS_VALUE[9000]) ) { 
    $sel_idcat = $idcat; 
} else { 
    $sel_idcat = CMS_VALUE[9000]; 
} 

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

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


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

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

        global $navitems_mod1, $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[9000] ){ 

                $navitems_mod1 = 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[9000]' 
                        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_mod1[$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_mod1; 
        $navitems_mod1 = $tmp_nav; 

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

}  // end function 

if ($catStart != 0 ) {

$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_mod1[$db->f("idcat")] = array("idcat"  => $db->f("idcat"), 
                                           "name"   => $db->f("name"), 
                                           "target" => $target); 
} 

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

/* Start Output buffer */ 
ob_start(); 

echo '<table cellspacing="0" cellpadding="0" border="0" valign="top">'; 

/* Eingefügt von TH: Überschrift für die Box */ 
echo '<tr>
	    	<td width="15" height="21" style="background-image:url(images/background/box_left.gif);background-repeat:no-repeat;">
	    	</td>
	    	<td height="21" width="100" style="background-image:url(images/background/box_tile.gif)">';

if ($catStart != "") {
  $catIds = conDeeperCategoriesArray($catStart);

        $sql = "SELECT CAT.idcat AS idcat, name FROM ".
               $cfg["tab"]["cat"]." AS CAT, ".
               $cfg["tab"]["cat_lang"]." AS CATLANG 
               WHERE CAT.idcat = ".$catStart."
               AND CAT.idcat = CATLANG.idcat
               AND CATLANG.idlang = '$lang'
               AND CATLANG.visible = '1'";
               
        $db->query($sql);
        $db->next_record();
        $target = "_self";

        echo '<a class="box" target="'.$target.'" href="front_content.php?idcat='.$db->f("idcat").'">'.$db->f("name").'</a></td>
	    <td width="15" height="21" align="right" style="background-image:url(images/background/box_right.gif);background-repeat:no-repeat;">
	    </td>
	   </tr>';
}
/* Ende der Änderung */

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

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

    if ($idcat == $data['idcat'] || is_array($data['sub'])) { 
        $tpl_mod1->generate('templates/navfirst_on.html'); 
    } else { 
        $tpl_mod1->generate('templates/navfirst_off.html'); 
    } 

    if (is_array($data['sub'])) { 

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

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

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

            if (is_array($data['sub'])) { 

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

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

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

                } // end foreach 

            } // end if 

        } // end foreach 

    } // end if 

} // end foreach 

echo '</table>'; 

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

/* Clean buffer */ 
ob_end_clean(); 

/* Output buffer-contents */ 
echo $html_mod2; 
}
?> 
Danke für jegliche Hilfe

Gruß
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence »

du hast die unterkategorien im selben baum ?
sind sie online ?
und besitzen sie einen startartikel ? -> der ebenfalls online gesetzt ist ?
*** make your own tools (wishlist :: thx)
magickai
Beiträge: 23
Registriert: Do 16. Sep 2004, 20:33
Kontaktdaten:

Beitrag von magickai »

ja, ist alles gegeben. Allerdings befindet sich der Einstiegspunkt bereits in der 3. (Wenn man den Punkt Hauptnavigation hinzunimmt in der 4.) Ebene. Eventuell liegt es ja an diesem Umstand.
Das Modul ist dahingehend modifiziert, dass man die Hauptnavigation auch tiefer gelegene Ebenen benutzen kann.

Gruß
OAA
Beiträge: 134
Registriert: Sa 15. Nov 2003, 15:54
Wohnort: Regensburg
Kontaktdaten:

Beitrag von OAA »

schau mal ins error-log!

vielleicht fehlt Dir das Recht "lock tables" oder funzt es mit der normalen Navi?
magickai
Beiträge: 23
Registriert: Do 16. Sep 2004, 20:33
Kontaktdaten:

Beitrag von magickai »

ans error-log komm' ich momentan nicht dran :? Aber die Hauptnavi hatte im "normalen" Zustand funktioniert! Somit dürfte es nicht am Recht "lock tables" liegen!

Gruß
magickai
Beiträge: 23
Registriert: Do 16. Sep 2004, 20:33
Kontaktdaten:

Beitrag von magickai »

Zum Glück musste ich mal ans error-log ran (ist schon 11 MB groß!) :oops:
Weiß nicht, ob dies mit der Hauptnavi zusammenhängt, aber dass sind die letzten Einträge:
[13-Oct-2004 13:32:41] Invalid SQL: SELECT
CAT.idcat AS idcat,
name
FROM
con_cat AS CAT,
con_cat_lang AS CATLANG

WHERE CAT.idcat =
AND CAT.idcat = CATLANG.idcat
AND CATLANG.idlang = '1'
AND CATLANG.visible = '1'<br><br>
[13-Oct-2004 13:32:41] next_record called with no query pending.
[13-Oct-2004 13:32:41] Invalid SQL: SELECT
CAT.idcat AS idcat,
name
FROM
con_cat AS CAT,
con_cat_lang AS CATLANG

WHERE CAT.idcat =
AND CAT.idcat = CATLANG.idcat
AND CATLANG.idlang = '1'
AND CATLANG.visible = '1'<br><br>
[13-Oct-2004 13:32:41] next_record called with no query pending.
Für eine Hilfe wäre ich sehr dankbar! Ist ja kein Zustand, dass das Error-Log so groß wird!

Gruß
Gesperrt