Hauptnavi mit Listen und CSS Tabellenlos ohne HTML Templates

yodatortenboxer
Beiträge: 424
Registriert: Do 22. Jan 2004, 14:45
Wohnort: Kölpinsee auf Usedom
Kontaktdaten:

Hauptnavi mit Listen und CSS Tabellenlos ohne HTML Templates

Beitrag von yodatortenboxer » Mi 23. Mär 2005, 11:17

Hallo,

ich habe für ein zwei Projekte eine Hauptnavigation gebraucht die komplett ohne Tabellen auskommt. Da mich dann zusätzlich jedesmal die neuen die Templateanpassungen gestört hatten hab ich nun das vorhandene Hauptnavigationsmodul aus Contenido für mich modifiziert.

Ich habe insgesammt 3 verschiedene Module erstellt.
Im ersten Modul wird die Navigation komlett in einer Liste dargestellt.
Im zweiten Modul wird die 1.Level-Navi in einer Liste und die 2.Level und 3.Level-Navi in einer Liste ausgegeben und im dritten Modul wird für jede der drei Level eine eigene Liste erstellt.

Die Ausgabe ist nun direkt mit CSS-Classen in dem Modul hinterlegt, so das die Templates nicht mehr angepasst werden müssten.
Nun ist alles über CSS formatierbar.

Die Liste hat nun folgende Rankfolge zum konfigurieren:
<ul><li><a><span>LINKNAME</span></a></li></ul>

folgende Classen sind vergeben:

Code: Alles auswählen

ul.firstnavi { /* definition der 1.Navigationleiste */
}

ul.secnavi { /* definition der 2.Navigationleiste */
}

ul.thirtnavi { /* definition der 3.Navigationleiste */
}

span.navi_ebene_1 { /* definition der 1.Navigationsebene */

}

a.navfirst_off { /* definition des OFF Linkzustandes der 1.Navigationsebene */
}

a.navfirst_on { /* definition des ON Linkzustandes der 1.Navigationsebene */
}

span.navi_ebene_2 { /* definition der 2.Navigationsebene */

}

a.second_off { /* definition des OFF Linkzustandes der 2.Navigationsebene */
}

a.second_on { /* definition des ON Linkzustandes der 2.Navigationsebene */
}

span.navi_ebene_3 { /* definition der 3.Navigationsebene */

}

a.third_off { /* definition des OFF Linkzustandes der 3.Navigationsebene */
}

a.third_on { /* definition des ON Linkzustandes der 3.Navigationsebene */
}
Mit diesen Klassen kann man nun über die CSS-Datei die komplette Positionierung und das Aussehen erstellen. Es können also verschiedene Farben und abstände eingestellt werden und auch der aktive und inaktive zustand wie gewohnt unterschiedlich gestaltet werden.

Mit dem 2-Listen Modul kann man nun auf diese Art ebenfalls eine Horizontale Hauptnavigation und eine Vertikale Unternavigation erstellen ohne zwei Module anzulegen. Mann kann sogar die Position der Unteravigation über die Hauptnavigation legen, also Hauptnavi unter Horizontal und Unternavi vertikal darüber.

Beispiele findet ihr hier:
http://weilerbach.de/ eine Liste
http://www.labrador-vom-stillen-tal.de/ eine Liste
http://www.abstrakt-media.de/ zwei Listen
http://www.exercitor.de/ eine Liste

Ich habe das ganze in eine Datei gepackt.
In dieser Datei sind die Module als TXT-Dateien inkl. einer kleinen CSS-Erklärung die am ende der TXT-Datei ist und noch für jedes Listenmodul eine Html-Datei in der man ein Beispiel der Liste unformatiert und mit CSS formatiert sehen kann.

Die Datei könnt ihr hier herunterladen:
http://www.xtended-cooperation.de/cms/u ... module.rar
oder einzeln die TXT-Dateien
http://www.xtended-cooperation.de/cms/u ... 1_list.txt
http://www.xtended-cooperation.de/cms/u ... 2_list.txt
http://www.xtended-cooperation.de/cms/u ... 3_list.txt
http://www.xtended-cooperation.de/cms/u ... gation.txt
und die Beispiele:
http://www.xtended-cooperation.de/cms/u ... 1_list.htm
http://www.xtended-cooperation.de/cms/u ... 2_list.htm
http://www.xtended-cooperation.de/cms/u ... 3_list.htm

Viel Spass...

gruß yodatortenboxer
Zuletzt geändert von yodatortenboxer am Mi 11. Jan 2006, 11:51, insgesamt 3-mal geändert.

jost
Beiträge: 322
Registriert: Mo 10. Jan 2005, 20:12
Kontaktdaten:

Beitrag von jost » Mi 23. Mär 2005, 12:22

Hi,

das sieht gut aus - werde ich doch gleich einmal ausprobieren. Danke für das zur Verfügung stellen des Codes.

Best,

J

yodatortenboxer
Beiträge: 424
Registriert: Do 22. Jan 2004, 14:45
Wohnort: Kölpinsee auf Usedom
Kontaktdaten:

Beitrag von yodatortenboxer » Mi 23. Mär 2005, 12:38

null Problemo,

ich nutze es momentan nur in der 4.5.2alpha, aber es müsste eigenlich auch in den anderen Versionen laufen.
Es wurde immer nur der Output bereich geändert und der Input ist noch der Orginalcode.

gruß yodatortenboxer

anjin san
Beiträge: 31
Registriert: Do 20. Mai 2004, 03:21
Kontaktdaten:

Beitrag von anjin san » Mi 23. Mär 2005, 22:03

Hallo,
Habe soeben versucht die Navigation einzubauen,
aber leider gehts nicht.
Ich verwende Contenido 4.4.5
und erhalte beim Aufruf der Seite folgende Fehlermeldung, mit der
ich leider nicht viel anfangen kann:
Fatal error: Call to undefined function: isstartarticle() in /kunden/marosnet.com/rp-hosting/4/4/mentaltrainer.biz/contenido/
includes/include.con_editcontent.php(571) : eval()'d code on line 534
Habe das Modul neu erstellt und dann im Template zugewiesen
Ach ja die Lampen im Modul sind grün.
Kann es sein, dass es mit 4.4.5 net geht?

Danke für Hilfe

yodatortenboxer
Beiträge: 424
Registriert: Do 22. Jan 2004, 14:45
Wohnort: Kölpinsee auf Usedom
Kontaktdaten:

Beitrag von yodatortenboxer » Mi 23. Mär 2005, 22:44

Ich habe eben nachgeschaut und in der 4.4.5 ist diese Funktion nicht vorhanden.
Da der Input der Module immer der selbe originale bleibt werde ich den Output ebenfalls dafür anpassen.

Für die Version wo die ganze Hauptnavi in einer Liste ist müsste das hier gehen(die CSS-Classen sind die selben):

Code: Alles auswählen

<?php

/***********************************************
* CONTENIDO MODUL - OUTPUT V4.4.5
*
* Modulname   :     Navigation 1.1
* Author      :     Jan Lengowski
* Copyright   :     Contenido - four for business
* Created     :     15-05-2003
* Modified    :     26-05-2003
*
* CSS-Modified http://www.xtended-cooperation.de
* ausgabe als Liste
*              Ralf Fleischer
*
* Modified : 23-03-2005
* 
************************************************/ 

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 "\n<ul class=\"firstnavi\">\n";

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

    /* 1. Navigations Ebene */
	echo "\t<li>";
	$href=$sess->url('front_content.php?idcat='.$data['idcat']);

    if ($idcat == $data['idcat'] || is_array($data['sub'])) {
        echo "<a class=\"navfirst_on\" target=\"".$data['target']."\" href=\"$href\"><span class=\"navi_ebene_1\">".$data['name']."</span></a>";
    } else {
        echo "<a class=\"navfirst_off\" target=\"".$data['target']."\" href=\"$href\"><span class=\"navi_ebene_1\">".$data['name']."</span></a>";
    }
	echo "</li>\n";
    if (is_array($data['sub'])) {

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

            /* 2. Navigations Ebene */
			echo "\t<li>";
			$href=$sess->url('front_content.php?idcat='.$data['idcat']);	

            if ($idcat == $data['idcat'] || is_array($data['sub'])) {
                echo "<a class=\"second_on\" target=\"".$data['target']."\" href=\"$href\"><span class=\"navi_ebene_2\">".$data['name']."</span></a>";
            } else {
                echo "<a class=\"second_off\" target=\"".$data['target']."\" href=\"$href\"><span class=\"navi_ebene_2\">".$data['name']."</span></a>";
            }
			echo "</li>\n";
			
            if (is_array($data['sub'])) {

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

                    /* 3. Navigations Ebene */
					echo "\t<li>";
					$href=$sess->url('front_content.php?idcat='.$data['idcat']);

                    if ($idcat == $data['idcat']) {
                        echo "<a class=\"third_on\" target=\"".$data['target']."\" href=\"$href\"><span class=\"navi_ebene_3\">".$data['name']."</span></a>";
                    } else {
                        echo "<a class=\"third_off\" target=\"".$data['target']."\" href=\"$href\"><span class=\"navi_ebene_3\">".$data['name']."</span></a>";
                    }

                } // end foreach

            } // end if

        } // end foreach

    } // end if

} // end foreach

echo "</ul>\n";

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

/* Clean buffer */
ob_end_clean();

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

?>
Die anderen werde ich mir morgen anschauen...

yodatortenboxer
Beiträge: 424
Registriert: Do 22. Jan 2004, 14:45
Wohnort: Kölpinsee auf Usedom
Kontaktdaten:

Beitrag von yodatortenboxer » Mi 23. Mär 2005, 23:18

Ich habe eben noch zwei kleine Fehler in der von mir oben stehenden Dateien gefunden und entfernt. Die Links sie oben stehen haben nun die aktuellen Inhalte.

die anderen für die 4.4.5 mache ich dann morgen...

yodatortenboxer
Beiträge: 424
Registriert: Do 22. Jan 2004, 14:45
Wohnort: Kölpinsee auf Usedom
Kontaktdaten:

Beitrag von yodatortenboxer » Mi 23. Mär 2005, 23:28

ok...

konnte es doch nicht lassen...

Hier ist die zwei Listen Version für die 4.4.5 angepasst. Falls fehler auftreten bitte bescheit sagen.

Code: Alles auswählen

<?php

/***********************************************
* CONTENIDO MODUL - OUTPUT 4.4.5
*
* Modulname   :     Navigation 1.1
* Author      :     Jan Lengowski
* Copyright   :     Contenido - four for business
* Created     :     15-05-2003
* Modified    :     26-05-2003
* 
* CSS-Modified http://www.xtended-cooperation.de 
* ausgabe als zwei Listen 
*              Ralf Fleischer 
* 
* Modified : 23-03-2005 
* 
************************************************/

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 "\n<ul class=\"firstnavi\">\n";

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

    /* 1. Navigations Ebene */
	echo "\t<li>";
	$href=$sess->url('front_content.php?idcat='.$data['idcat']);

    if ($idcat == $data['idcat'] || is_array($data['sub'])) {
        echo "<a class=\"navfirst_on\" target=\"".$data['target']."\" href=\"$href\"><span class=\"navi_ebene_1\">".$data['name']."</span></a>";
    } else {
        echo "<a class=\"navfirst_off\" target=\"".$data['target']."\" href=\"$href\"><span class=\"navi_ebene_1\">".$data['name']."</span></a>";
    }
	echo "</li>\n";
	if (is_array($data['sub'])) { 
        $tmp_data = array(); 
        $tmp_data = $data; 
        }

} // end foreach
echo "</ul>\n";

	
    if (is_array($tmp_data['sub'])) {
		echo "\n<ul class=\"secnavi\">\n";
		$data = $tmp_data;
        foreach ($data['sub'] as $key => $data) {

            /* 2. Navigations Ebene */
			echo "\t<li>";
			$href=$sess->url('front_content.php?idcat='.$data['idcat']);	

            if ($idcat == $data['idcat'] || is_array($data['sub'])) {
                echo "<a class=\"second_on\" target=\"".$data['target']."\" href=\"$href\"><span class=\"navi_ebene_2\">".$data['name']."</span></a>";
            } else {
                echo "<a class=\"second_off\" target=\"".$data['target']."\" href=\"$href\"><span class=\"navi_ebene_2\">".$data['name']."</span></a>";
            }
			echo "</li>\n";
			
            if (is_array($data['sub'])) {

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

                    /* 3. Navigations Ebene */
					echo "\t<li>";
					$href=$sess->url('front_content.php?idcat='.$data['idcat']);

                    if ($idcat == $data['idcat']) {
                        echo "<a class=\"third_on\" target=\"".$data['target']."\" href=\"$href\"><span class=\"navi_ebene_3\">".$data['name']."</span></a>";
                    } else {
                        echo "<a class=\"third_off\" target=\"".$data['target']."\" href=\"$href\"><span class=\"navi_ebene_3\">".$data['name']."</span></a>";
                    }

                } // end foreach

            } // end if

        } // end foreach

    } // end if


echo "</ul>\n";

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

/* Clean buffer */
ob_end_clean();

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

?>

i-fekt
Beiträge: 1520
Registriert: Mo 3. Jan 2005, 02:15
Wohnort: Chemnitz
Kontaktdaten:

Beitrag von i-fekt » Do 24. Mär 2005, 00:09

Sieht zwar nett aus, ist aber sinngemäss falsch.

Eine Ebene 2 muss eingerückt sein, dh die müsste so aussehen:

Code: Alles auswählen

<ul>
 <li>
  <ul>
   <li></li>
   <li></li>
   <li></li>
  </ul>
 </li>
 <li></li>
 <li></li>
 <li></li>
</ul>
;)

Ausserdem verstehe ich nicht ganz wozu du 3 Module brauchst? Ich habe das ganze bei mir (Contenido 4.4.5) mit einem Hauptnavigations-Modul gemacht?

yodatortenboxer
Beiträge: 424
Registriert: Do 22. Jan 2004, 14:45
Wohnort: Kölpinsee auf Usedom
Kontaktdaten:

Beitrag von yodatortenboxer » Do 24. Mär 2005, 11:19

@Craxx
Sieht zwar nett aus, ist aber sinngemäss falsch.
Das würde ich nicht so direkt sagen, es kommt darauf an was man mit den Listen machen willst.
Eine Ebene 2 muss eingerückt sein, dh die müsste so aussehen:
Wo steht das??? :wink:
Ausserdem verstehe ich nicht ganz wozu du 3 Module brauchst? Ich habe das ganze bei mir (Contenido 4.4.5) mit einem Hauptnavigations-Modul gemacht?
Es muss nur ein Hauptnavigations-Modul eingebunden werden. Es gibt aber 3 verschiedene Versionen davon die unterschiedliche Listen ausgeben und man nimmt nur das, was man für sein Layout braucht. Wenn ich nun also eine Horizontale Hauptnavi mit einer Vertikalen Unternavi machen will nehme ich das angepasste Modul mit den zwei Listen.

Siehe Beispiele oben:
http://weilerbach.de/contenido/cms/ Modul eine Liste eingebunden
http://www.labrador-vom-stillen-tal.de/ Modul eine Liste eingebunden
http://www.abstrakt-media.de/ Modul zwei Listen eingebunden
http://css.xtended-cooperation.de/ Modul zwei Listen eingebunden

Nun zu dem anderen...

Wenn du nun so vorgehst:

Code: Alles auswählen

<ul> 
 <li> 
  <ul> 
   <li></li> 
   <li></li> 
   <li></li> 
  </ul> 
 </li> 
 <li></li> 
 <li></li> 
 <li></li> 
</ul>
und es bei dir dann mit deiner Konfiguration funktioniert ist es doch ok. du hast dann zwar ebenfalls zwei Listen, wobei die eine aber in der anderen steht und meiner Meinung nach nicht mehr so ganz unabhängig von der erste Liste ist.
Du würdest also in diesem Fall:

Punkt1
Punk2
Punkt2.1
Punkt2.2
Punkt3
Punkt3.1
Punkt3.2

eher so vorhehen:

Code: Alles auswählen

<ul>
   <li>Punkt1</li>
   <li>Punkt2
      <ul>
         <li>Punkt2.1</li>
         <li>Punkt2.2</li>
      </ul>
   </li>
   <li>Punkt3
      <ul>
         <li>Punkt3.2</li>
         <li>Punkt3.2</li>
      </ul>
   </li>
</ul>
Da ich aber, vieleicht auch Layoutbedingt, damit nur Probleme mit dieser Art der Liste bei der Positionierung und dem Konfigurieren durch CSS hatte, bin ich diesen anderen Weg gegangen.

Wenn ich mich nun mit folgender aussage Irre bitte nicht schlagen:
Die zweite Liste ist fast immer abhängig von der ersten Liste.
Ich hatte immer an der Stelle Probleme wo ein NaviPunkt einen Unternavipunkt geöffnet hatte da der Listen-Tag </li> vom NaviPunkt rein Quelltextmäßig immer hinter der eingerückten oder anders Positionierten Liste der Unternavi erst wieder geschlossen wurde.

Code: Alles auswählen

<ul>
   <li>Punkt1</li>
   <li>Punkt2                         // Hauptpunkt geöffnet
      <ul>                               // Liste für Unternavi geöffnet und anders Positioniert
         <li>Punkt2.1</li>        
         <li>Punkt2.2</li>
      </ul>                              // Liste für Unternavi geschlossen 
   </li>                                  // Hauptpunkt geschlossen
   <li>Punkt3
      <ul>
         <li>Punkt3.2</li>
         <li>Punkt3.2</li>
      </ul>
   </li>
</ul>

Stelle ich zum Beispiel die erste Liste auf position:absolute; und die zweite auf position:relative; zerhaut es mir meine erste Liste unter bestimmten Bedingungen.

Hier habe ich es einmal getestet. Es sind in beiden die selben CSS anweisungen nur die Listenart ist verschieden. Man sieht es nun an der Hauptnavi.

Die erste version mit zwei Unabhängigen Listen:
http://www.xtended-cooperation.de/uploa ... _test1.htm
Die Version mit Liste in Liste
http://www.xtended-cooperation.de/uploa ... _test2.htm
Zwischen dem Punkt2 und Punk3 ist das was ich oben beschrieben hatte was scheinbar dadurch entsteht das der Listen-Tag von Punkt2 erst hinter der anders positionierten Liste der Unternavi geschlossen wird.

Ich hatte da ziehmlich Lange herumprobiert und dann diese andere Lösung genommen und keinerlei Probleme mehr damit gehabt.

Im Fall des Modules eins sieht es bei mir so aus:

Code: Alles auswählen

<ul> 
   <li></li> 
   <li></li> 
   <li></li> 
</ul>
im Fall des Modules zwei so:

Code: Alles auswählen

<ul> 
   <li></li> 
   <li></li> 
   <li></li> 
</ul>
<ul> 
   <li></li> 
   <li></li> 
   <li></li> 
</ul>
un im Fall des Modules drei so:

Code: Alles auswählen

<ul> 
   <li></li> 
   <li></li> 
   <li></li> 
</ul>
<ul> 
   <li></li> 
   <li></li> 
   <li></li> 
</ul>
<ul> 
   <li></li> 
   <li></li> 
   <li></li> 
</ul>
Im letzteren habe ich nun von der Position und CSS Konfiguration komplett unabhängig voneinander stehende Listen.
Was soll daran also "sinngemäss falsch" sein.

gruß yodatortenboxer 8)

i-fekt
Beiträge: 1520
Registriert: Mo 3. Jan 2005, 02:15
Wohnort: Chemnitz
Kontaktdaten:

Beitrag von i-fekt » Do 24. Mär 2005, 13:56

Optisch mag deine Liste stimmen, allerdings ist sie syntaktisch falsch.
Wenn eine Ebene 2 erscheinen soll muss diese an dem Punkt stehen wo sie in der Ebene 1 hingehört (siehe meine Liste oben).

Du solltest versuchen das umzusetzen, man sollte sich ja korrektes coden angewöhnen. ;)

yodatortenboxer
Beiträge: 424
Registriert: Do 22. Jan 2004, 14:45
Wohnort: Kölpinsee auf Usedom
Kontaktdaten:

Beitrag von yodatortenboxer » Do 24. Mär 2005, 15:06

Ich denke das du da eine kleinigkeit durcheinander bringst.

Wenn es um eine Liste mit Ebenen geht hat du natürlich voll recht, und das habe ich auch nie anders gesehen.

Aber nur weil die Hauptnavigation verschiedene Ebenen hat heist das doch noch lange nicht das sie auch so ausgegeben werden muss.
Sie steht ja zum Beipiel in der Datenbank auch nicht so untereinander:

Punkt1
Punkt2
Punkt2.1
Punkt2.2
Punkt3

Das sind zwei komplett veschiedene Schuhe.

Dann währe ja auch die Ausgabe der Hauptnavigation in einer Tabelle und die dazugehörige Unternavigation in einer anderen Tabelle falsch und müssten zusammen in einer Tabelle stehen.

Wenn es wirklich einen Fehler in der HTML-Syntax sein soll dann müsste ja auf der Webseite des W3C dieser Fehler angezeigt werden.
Probier es einmal aus und gehe auf http://validator.w3.org/
und http://jigsaw.w3.org/css-validator/validator-uri.html und teste es mit dieser Seite:
http://css.xtended-cooperation.de/index.php?idcat=3
In der Seite ist momentan nur das Layout und dieses zwei-Listen Modul und daher kann man andere Fehler, die zum Beispiel durch den Editor entstehen ausschließen.
Die Fehlermeldungen die unter der url http://css.xtended-cooperation.de/ angezeigt werden sind durch den Editor und nicht durch die Listen, deshalb die http://css.xtended-cooperation.de/index.php?idcat=3 nehmen.

gruß yodatortenboxer

i-fekt
Beiträge: 1520
Registriert: Mo 3. Jan 2005, 02:15
Wohnort: Chemnitz
Kontaktdaten:

Beitrag von i-fekt » Do 24. Mär 2005, 17:03

Die Syntax in Sinne des Ziels ist falsch. Ziel ist es ja Ebenen logisch zu verknüfpen und auch so darzustellen.

Gehen wir z.B. von dieser Seite aus: Weilerbach.de

Du hebst die zweite Ebene mittels CSS anders hervor. Die Syntax müsste aber so sein wie von mir beschrieben, da sonst alle die selbe Gewichtung haben.

Willst du nur das Hervorheben bezwecken, reichen schliesslich DIVs, sie brauchen nicht soviel Formatierung wie <ul> und <li> Elemente.

PS:
Der W3C Validator checkt ob du Elemente korrekt verschachtelt hast. Ob ein Element wie hier in der ersten, zweiten oder x-ten Ebene liegt kann der Validator nicht erkennen. Daher sollte man nicht denken, dass man korrekt gecodet hat wenn der Validator nicht mehr meckert. Man sollte ein Stück weiter gehen... ;)

yodatortenboxer
Beiträge: 424
Registriert: Do 22. Jan 2004, 14:45
Wohnort: Kölpinsee auf Usedom
Kontaktdaten:

Beitrag von yodatortenboxer » Do 24. Mär 2005, 17:53

Ich denke das ganze hier wird nun eine Art Bauernfängerei wo es langsam vom zehntel ins huntertstel geht.

Bei der Modulversion mit der einen Liste kann ich deine Argumentation verstehen. Bei der Version mit den zwei Listen habe ich dir oben schon ein Beispiel hinterlegt wo es auf diese Art Probleme gab.
In dem Fall der zwei Listen könnte ich so argumentieren das im Quelltext eine Liste oben für mich eine höhere Gewichtung als eine darunterstehende Liste hat. Es ist alles Interpretationssache.

Wenn du der Meinung bist das es so nicht ganz richtig ist, warum setzt du dann nicht einfach die deiner Meinung nach bessere Version hier in das Forum. Ich würde mich darüber freuen.

Das bringt uns alle weiter.
Dann haben alle etwas davon.
Davon lebt das Forum.

i-fekt
Beiträge: 1520
Registriert: Mo 3. Jan 2005, 02:15
Wohnort: Chemnitz
Kontaktdaten:

Beitrag von i-fekt » Do 24. Mär 2005, 18:17

Ich habe kein C4.5.2+ laufen, arbeite noch mit der 4.4.5.

Da ich die Meinung vertrete man sollte korrekt coden weise ich natürlich auf Fehler hin. ;)

yodatortenboxer
Beiträge: 424
Registriert: Do 22. Jan 2004, 14:45
Wohnort: Kölpinsee auf Usedom
Kontaktdaten:

Beitrag von yodatortenboxer » Do 24. Mär 2005, 18:39

Oben hab ich etwas für die 4.4.5 stehen.
Die kannst du gern verbessern da ich wiederum kein 4.4.5 installiert habe und schon wie du selbst sehen kannst schon anfragen für die 4.4.5 da waren.

8)

Gesperrt