Navigation in 4. Ebene

Gesperrt
beabu
Beiträge: 3
Registriert: Mi 2. Jun 2004, 10:01
Kontaktdaten:

Navigation in 4. Ebene

Beitrag von beabu » Mi 2. Jun 2004, 10:04

Hallo

ich bin noch etwas neu hier und noch nicht so vertraut mit der ganzen sache, aber bitte nehmt mir die Fragen nicht übel.

ich will die Navigation in einer 4 Ebene aufbauen, nur weiss ich nicht so recht wie ich den php script ändern soll - vielleicht könnt ihr mir ja weiterhelfen.

Die zweite Frage ist, ich habe in der Ausgabe über der Navigation ein "FC" stehen und weiss nicht so recht woher das kommt und wie man das wieder verschwinden lässt.

Viele Grüße

Beabu

kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Beitrag von kummer » Mi 2. Jun 2004, 10:10

das fc steht im modul hauptnavigation. dort sind auch allfällige anpassungen vorzunehmen, um eine 4. navigationsebene zu schaffen.
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)

beabu
Beiträge: 3
Registriert: Mi 2. Jun 2004, 10:01
Kontaktdaten:

Beitrag von beabu » Mi 2. Jun 2004, 10:17

Hallo kummer,

das habe ich gefunden, aber ich weiss nicht so recht was ich in die Eingabe schreiben soll, damit sich die 4. Ebene öffnet

beabu
Beiträge: 3
Registriert: Mi 2. Jun 2004, 10:01
Kontaktdaten:

Beitrag von beabu » Mi 2. Jun 2004, 11:39

folgendes steht in der ausgabe, aber leider wird die navigation nun doppelt angezeigt ich will aber die 4. Ebene unter der 3 Ebene

/* 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->next();

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

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->next();

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

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->next();

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




/* 4. 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->next();

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

Simone
Beiträge: 193
Registriert: Fr 9. Sep 2005, 06:39
Kontaktdaten:

Beitrag von Simone » Fr 14. Okt 2005, 05:49

Auch ich bin auf die Idee gekommen, eine 4. Navigationsebene einzubauen, und kam zu der Schlußfolgerung, dieses im Hauptnavi-Modul zu tun.

Also begab ich mich in die Suche, ob andere ebenfalls sich schon mit der Problematik beschäftigt haben. Siehe da, ich fand dieses Thread.

Er/sie schreibt:


Code: Alles auswählen

 /* 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->next();

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

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->next();

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

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->next();

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


/* 4. 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->next();

if ($idcat == $data['idcat']) {
$tpl->generate('templates/navthird_on.html');
} else {
$tpl->generate('templates/navthird_off.html');
}
Es muß /kann in der 4. Ebene heißen:

Code: Alles auswählen

/* 4. 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->next();

if ($idcat == $data['idcat']) {
$tpl->generate('templates/navfourth_on.html');
} else {
$tpl->generate('templates/navfourth_off.html');
}
wenn die 4. Ebene ein eigenes Layout erhalten soll
Zudem muß am Ende der 3. Ebene der Befehl:

Code: Alles auswählen

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

foreach ($data['sub'] as $key => $data) {
und am Ende ein weiterer Abschlußbefehl zugefügt werden:

Code: Alles auswählen

            } // end if

        } // end foreach
sonst erscheint die 3. Ebene noch einmal.

Für alle nochmal der vollständige Code:

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;
}

/**
 * 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">';

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->next();

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

    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->next();

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

            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->next();

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

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

                             /* 4. 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->next();

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

                } // end foreach

            } // end if

        } // end foreach

    } // end if

} // end foreach

            } // end if

        } // end foreach

echo '</table>';

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

/* Clean buffer */
ob_end_clean();

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

?>
Gruß Simone

effex
Beiträge: 55
Registriert: So 13. Mär 2005, 14:03
Kontaktdaten:

Beitrag von effex » Di 25. Okt 2005, 14:14

@Simone: Danke für die Änderung!

Aber ist dir schon aufgefallen das bei aktiver 4. Ebene die 3. Ebene die Einstellungen (CSS) für den aktiven Zustand verliert? Hast du vielleicht eine Lösung?

Simone
Beiträge: 193
Registriert: Fr 9. Sep 2005, 06:39
Kontaktdaten:

Beitrag von Simone » Di 25. Okt 2005, 14:34

hallo effex,

ja, das ist mir auch schon aufgefallen. Ich vermute - da müßte man HerrnB und Frau Halchteranerin als die Profis hier im Team fragen -, daß es was mit den Einstellungen zuvor zu tun hat.

Unter anderem steht im Code für die erste und zweite Nav-ebene

Code: Alles auswählen

if ($idcat == $data['idcat'] || is_array($data['sub'])) {
Dieses sub verstehe ich als Unterkategorie. Weil im Original die Ebenen in der dritten endeten, vermute ich, daß man nun in der dritten - die ja nicht mehr die letzte ist - ebenfalls die sub-Zeile schreiben müßte. Ich habe natürlich wie der Vorgänger in diesem Thread die Kopie von der dritten Ebene genommen.

Aber ich werde mich jetzt mal darum kümmern. Wenn ich ein Ergebnis habe, schreibe ich den Code in dieses Thread.

Simone
Beiträge: 193
Registriert: Fr 9. Sep 2005, 06:39
Kontaktdaten:

Beitrag von Simone » Di 25. Okt 2005, 14:48

Problem gelöst, probiert es doch bitte bei Euch aus.

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;
}

/**
 * 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">';

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->next();

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

    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->next();

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

            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->next();

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

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

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


                             /* 4. 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->next();

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

                } // end foreach

            } // end if

        } // end foreach

    } // end if

} // end foreach

            } // end if

        } // end foreach

echo '</table>';

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

/* Clean buffer */
ob_end_clean();

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

?>
Es lag, wie ich vermutete an dieser sub-Zeile. Ich habe den Code der zweiten Ebene kopiert und aus navsecond navthird gemacht.
Das heißt, will man eine weitere Ebene einbauen, dann muß die vorletzte Ebene ebenfalls die Kopie der dritten Ebene (mit Änderung der navthird in navfourth) bekommen. Wichtig ist, daß die letzte Ebene den Befehl für die Endebene bekommt und natürlich die von mir oben beschriebenen Endschleifen erhält.

Wenn mein Gestammel nicht klar ist, bitte signalisieren. :lol:

Simone

effex
Beiträge: 55
Registriert: So 13. Mär 2005, 14:03
Kontaktdaten:

Beitrag von effex » Di 25. Okt 2005, 14:59

Klasse! Kannst du mir bitte sagen, was du geändert hast, da ich das Script in einer abgänderten Variante einsetze.

Simone
Beiträge: 193
Registriert: Fr 9. Sep 2005, 06:39
Kontaktdaten:

Beitrag von Simone » Di 25. Okt 2005, 15:24

Ich wollte eigentlich ein Bild zeigen, aber ich scheitere an der Bedienung. Also schriftlich.

Die Navigationsebenen werden in zwei Formen angezeigt.
1. Solange noch eine Ebene darunter ist, kommt diese Form zum Einsatz:

/* Xte. 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->next();

if ($idcat == $data['idcat'] || is_array($data['sub'])) {
$tpl->generate('templates/navXte_on.html');
} else {
$tpl->generate('templates/navXte_off.html');
}
und mit
if (is_array($data['sub'])) {
foreach ($data['sub'] as $key => $data)



2. Die letzte Ebene muß auf jedenfall diese sein:

/* letzte. 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->next();

if ($idcat == $data['idcat'])ohne sub{
$tpl->generate('templates/navletzte_on.html');
} else {
$tpl->generate('templates/navletzte_off.html');
}
und ohne
if (is_array($data['sub'])) {
foreach ($data['sub'] as $key => $data)


Zum Schluß benötigt jede Ebene, die noch eine weitere Ebene unter sich hat den Endbefehl:

} // end foreach
mit } // end if


Aber die letzte Ebene erhält den Endbefehl
} // end foreach
ohne } // end if



Im Klartext: Habe ich 5 Ebenen brauche ich am Ende 4 Endbefehle mit } // end if und 1 Endbefehl ohne } // end if

Simone

effex
Beiträge: 55
Registriert: So 13. Mär 2005, 14:03
Kontaktdaten:

Beitrag von effex » Di 25. Okt 2005, 16:37

@Simone: Es funzt! Danke noch mal!

effex
Beiträge: 55
Registriert: So 13. Mär 2005, 14:03
Kontaktdaten:

Beitrag von effex » Mi 26. Okt 2005, 10:15

Hat jemand zufällig ein passendes Navigationspfad-Modul zur Anzeige der 4. Ebene?

(gemeint ist: Breadcrump, LocationString oder wie immer man es nennen will)

HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB » Mi 26. Okt 2005, 23:43

Hat jemand zufällig ein passendes Navigationspfad-Modul zur Anzeige der 4. Ebene?
Bitte bleibe beim Thema oder eröffne ein Neues. Breadcrumb ist

Du -> bist -> hier -> in der -> Kategorie

Das hat mit einem Navigations-Menü-Modul nichts zu tun... :wink:

Die im Forum verfügbaren Module sind meines Wissens nicht in ihrer Tiefe limitiert, hast Du schon mal gesucht und eines ausprobiert? Poste ggf. Deinen Wunsch bei dem jeweiligen Thread. Danke.

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net

Gesperrt