Hauptnavigation aus Liste für 4.6.x

Gesperrt
casi1969
Beiträge: 71
Registriert: Mi 4. Aug 2004, 16:30
Wohnort: Köln
Kontaktdaten:

Hauptnavigation aus Liste für 4.6.x

Beitrag von casi1969 »

Hallo,

bisher (4.4.5) habe ich immer die Navi von Jan Lengowski benutzt (s.u.), die einfach eien <ul>-Liste ausspuckt, die man dann mit CSS gestalten kann.

Die funktioniert aber in der 4.6.2 nicht mehr richtig. Die Links werden nicht richtig eingebaut. Weiss jemand Rat? Bin für jeden Tipp dankbar

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 
* Modified    :     30-11-2005 Carsten Peters
************************************************/ 

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 
*/ 
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 */ 


/************************************************************/ 

echo "
<ul id=\"nav\">\n";/*liste erste ebene***********************************/ 

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

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

echo "    <li>";/*anfang listenpunkte erste ebene***********************/ 

        if ($idcat == $data['idcat']) { // template für aktiven menüpunkt 
   $tpl->generate('templates/nav1_active.html'); 
        } elseif ( is_array($data['sub']) ) { // template für geöffnete kategorien 
   $tpl->generate('templates/nav1_on.html'); 
        } else { // template für geschlossene nicht aktive kategorie 
   $tpl->generate('templates/nav1_off.html'); 
        } 


    if (count($data['sub'])>=1) { 
echo "        <ul>\n";/*anfang liste zweite ebene****************************/ 

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

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

echo "            <li>";/*anfang listenpunkte zweite ebene**********************/ 
            if ($idcat == $data['idcat']) { // template für aktiven menüpunkt 
           $tpl->generate('templates/nav2_active.html'); 
                } elseif ( is_array($data['sub']) ) { // template für geöffnete kategorien 
           $tpl->generate('templates/nav2_on.html'); 
                } else { // template für geschlossene nicht aktive kategorie 
           $tpl->generate('templates/nav2_off.html'); 
                } 

    if (count($data['sub'])>=1) { 
echo "\n        <ul>\n";/*anfang liste dritte ebene*****************************/ 


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

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

echo "            <li>";/*anfang listenpunkte dritte ebene***********************/ 

                   if ($idcat == $data['idcat']) { // template für aktiven menüpunkt 
                   $tpl->generate('templates/nav3_active.html'); 
                        } elseif ( is_array($data['sub']) ) { // template für geöffnete kategorien 
                   $tpl->generate('templates/nav3_on.html'); 
                        } else { // template für geschlossene nicht aktive kategorie 
                   $tpl->generate('templates/nav3_off.html'); 
                        } 

echo "</li>\n";/*ende listenpunkte dritte ebene************************/ 
                } // end foreach 
echo '</ul>';/*ende liste dritte ebene******************************/ 

            } // end if 
echo "            </li>\n"; /*ende listenpunkte zweite ebene***********************/ 
        } // end foreach 
echo "        </ul>\n";/*ende liste zweite ebene*****************************/ 
    } // end if 

echo "    </li>\n";/*ende listenpunkte erste ebene************************/ 
} // end foreach 

echo "</ul>";/*ende liste erste ebene*******************************************************/  

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

?> 
casi1969
Beiträge: 71
Registriert: Mi 4. Aug 2004, 16:30
Wohnort: Köln
Kontaktdaten:

Beitrag von casi1969 »

Habe es hin bekommen - ich musste nur an drei Stellen das
"$tpl->set('d', 'HREF', $sess->url('?idcat='.$data['idcat']));" durch "$tpl->set('d', 'HREF', $sess->url('front_content.php?idcat='.$data['idcat']));" ersetzen. Jetzt läuft's.

Aber was steckt dahinter?
iAlex
Beiträge: 51
Registriert: Sa 2. Okt 2004, 17:07
Kontaktdaten:

Wo...

Beitrag von iAlex »

Hi !

Wäre schön, wenn das auch bei mir funzen würde.
Woher bekomme ich denn diese Dateien:

nav1_active.html
nav1_on.html
nav1_off.html

und das Ganze dann 3mal ?

Das scheint bei mir noch der Fehler zu sein.

Grüße
iAlex
rezeptionist
Beiträge: 1536
Registriert: Fr 20. Aug 2004, 10:07
Kontaktdaten:

Beitrag von rezeptionist »

die findest du unter Style -> HTML Editor

in der linken spalte

greets
greets
Gesperrt