Horizontale Navigation?!!

uups
Beiträge: 116
Registriert: Fr 16. Jan 2004, 09:08
Kontaktdaten:

Horizontale Navigation?!!

Beitrag von uups » So 30. Mai 2004, 18:04

Jetzt suche ich doch schon eine zeitlang im Forum und finde leider keine Lösung, nur angefangene Diskussionen dazu...

Ich bin auf der Suche nach einer horizontalen Navigation, die z.B so aussieht:

[b]Punkt1 | Punkt2 | Punkt3 | Punkt4[/b]


Wenn ich dann z.B. auf Punkt2 klicke, sollte die zweite Ebene ebenfalls horizontal darunter erscheinen, so:

[b]Punkt1 | Punkt2 | Punkt3 | Punkt4[/b]
Punkt2.1 Punkt2.2 Punkt2.3 Punkt2.4 Punkt2.5


Hat denn noch keiner ein solches Modul im Einsatz??

neu@cidnet.de
Beiträge: 356
Registriert: Do 15. Jan 2004, 21:32
Wohnort: Mönchengladbach
Kontaktdaten:

Beitrag von neu@cidnet.de » So 30. Mai 2004, 20:04

sowas möchte ich auch haben :)

2Code
Beiträge: 73
Registriert: So 4. Jan 2004, 11:24
Kontaktdaten:

Beitrag von 2Code » Mo 31. Mai 2004, 00:39

Soll das in einem eigenen div erscheinen der im html code ist, oder brauchst du etwas mit z-index?

uups
Beiträge: 116
Registriert: Fr 16. Jan 2004, 09:08
Kontaktdaten:

Beitrag von uups » Mo 31. Mai 2004, 08:51

Spielt das eine Rolle? Ich denke, das müssten einfach zwei Module sein, die ich in verschiedene Container stelle?

Ich bin da aber flexibel, hauptsache ich finde eine horizontale Navigation!

2Code
Beiträge: 73
Registriert: So 4. Jan 2004, 11:24
Kontaktdaten:

Beitrag von 2Code » Mo 31. Mai 2004, 08:56

Sorry bin gerade super im stress.
Ich glaub ich hab was für Dich, ich muss allerdings noch den code aufräumen :oops:
Falls ich es bis morgen vergesse, schick mir eine pm.

Gruss

uups
Beiträge: 116
Registriert: Fr 16. Jan 2004, 09:08
Kontaktdaten:

Beitrag von uups » Mo 31. Mai 2004, 09:08

Mach ich! Danke schon mal!

jumar
Beiträge: 25
Registriert: Fr 24. Okt 2003, 00:38
Kontaktdaten:

Beitrag von jumar » So 13. Jun 2004, 22:52

Hi!

@2Code:

Haste den Quelltext entmüllt?
Bin an so einer Navi auch interessiert.

Bye,
Jumar

SkyBlader
Beiträge: 303
Registriert: Do 18. Mär 2004, 16:23
Wohnort: Ratingen / NRW
Kontaktdaten:

Beitrag von SkyBlader » Di 15. Jun 2004, 22:11

MODUL CHANGELOC

Code: Alles auswählen

/***********************************************
* CONTENIDO MODUL
*
* Modulname    :	MOD_NavBar_SecLvl
* Modulversion :	0.1 alpha 
* Author       :	Stefan Bürk
* Kontakt      :	Email: webmaster@skyblader.org
* Copyright    :	Bundeswehr - Stab 7. Panzerdivision, Stefan Bürk
* C-Version    :	4.4
* Created      :	09-03-2004
* Modified     :	17-03-2004
*
* Beschreibung :
*
* Navigationsstruktur für Untermenüs mit 1 Navigationsebene,
* die im SecNavLvl Bereich angezeigt wird.
* 
************************************************/

20.03.2004
==========

in/out  Erweiterung um die "Zurück" Kategorie auswahl und Codegenerierung im
        Output-Code


19.03.2004
==========

out	DB-Abfrage 2 ( $sql ) lesbar für Otto-Normal-Verbraucher formatiert

17.03.2004
==========

out	Securitychecks implementiert um Injections zu unterbinden
	-	lokale Modul-Variablen initalizieren um Injects zu unterbinden
	-	Parametervariabeln gegen SQL-Injection-Versuche untersuchen
MODUL INPUT

Code: Alles auswählen

/***********************************************
* INPUT
************************************************/

// selected category
$selected = "CMS_VALUE[3100]";
$selected2= "CMS_VALUE[3101]";

echo "<table cellspacing=\"0\" cellpadding=\"10\" border=\"0\">
        <tr valign=\"top\">
          <td>Kategorie wählen:</td>
          <td>
            <select name=\"CMS_VAR[3100]\">";
            if($selected!="0" && $selected!=""){
             echo"<option value=\"0\">--- kein ---</option>";

            }else{
            echo"<option selected=\"selected\" value=\"0\">--- kein ---</option>";
            }

            // fetch all categorys
            $query = "	SELECT 
            			A.idcat, 
            			A.level, 
            			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 C.idlang='$lang' 
                     		AND B.idclient='$client' 
                     		AND C.visible=1 ORDER BY A.idtree";
                     		
            // execute query
            $db->query($query);

            // loop result and build the options
            while ($db->next_record()) {

              // indent spacer
              $spaces = "|";

              // how many levels
              $levels = $db->f("level");

              for ($i = 0; $i < $levels; $i ++) {
                // add 2 spaces for every level
                $spaces = $spaces . "--";

              } // end for
              
              $spaces .= ">";


              if ($selected == $db->f("idcat")) {
                // selected category
                echo "<option selected=\"selected\" value=\"". $db->f("idcat") ."\">". $spaces . $db->f("name") ."</option>";

              } else {
                // category
                echo "<option value=\"". $db->f("idcat") ."\">". $spaces . $db->f("name") ."</option>";

              } // end if

            } // end while

echo "      </select>";

echo "    </td>
        </tr>
        <tr valign=\"top\">        
          <td>Kategorie wählen:</td>
          <td>
            <select name=\"CMS_VAR[3101]\">";
            if($selected2!="0" && $selected2!=""){
             echo"<option value=\"0\">--- kein ---</option>";

            }else{
            echo"<option selected=\"selected\" value=\"0\">--- kein ---</option>";
            }

            // fetch all categorys
            $query = "	SELECT 
            			A.idcat, 
            			A.level, 
            			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 C.idlang='$lang' 
                     		AND B.idclient='$client' 
                     		AND C.visible=1 ORDER BY A.idtree";
                     		
            // execute query
            $db->query($query);

            // loop result and build the options
            while ($db->next_record()) {

              // indent spacer
              $spaces = "|";

              // how many levels
              $levels = $db->f("level");

              for ($i = 0; $i < $levels; $i ++) {
                // add 2 spaces for every level
                $spaces = $spaces . "--";

              } // end for
              
              $spaces .= ">";


              if ($selected2 == $db->f("idcat")) {
                // selected category
                echo "<option selected=\"selected\" value=\"". $db->f("idcat") ."\">". $spaces . $db->f("name") ."</option>";

              } else {
                // category
                echo "<option value=\"". $db->f("idcat") ."\">". $spaces . $db->f("name") ."</option>";

              } // end if

            } // end while

echo "      </select>";

echo "    </td>
        </tr>       
        
      </table>";
MODUL OUTPUT:

Code: Alles auswählen

<?php

/***********************************************
* OUTPUT
************************************************/

include_once($cfg["path"]["contenido"].$cfg["path"]["includes"]."functions.con.php");

// ****************************************************************************************************
// SECURITY-CHECKS
// ****************************************************************************************************

// SQL-Injection Überprüfungen und Work-Arounds

// lokale Variabeln initialisieren um Injections zu unterbinden
$db2 		= "";
$catStart 	= "";
$catPrev	= "";
$sTmpStr 	= "";
$db2_sql 	= "";
$catIds 	= "";
$key 		= "";
$val 		= "";
$sql 		= "";

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

// erstelle eine zweite DB-Klasseninstanz, da wir hier
// mit zwei Abfragen udn Resultsets arbeiten müssen
$db2 = new DB_Contenido;


// Hole aus der Artikeldefinition die Ausgewählte Navigationsebene
$catStart = "CMS_VALUE[3100]";
$catPrev  = "CMS_VALUE[3101]";

// * get catPrec Category and output CatName as [ BackTo ]  nav item


if ($catStart != "") {
  $sTmpStr = "";

        // Datenbankabfrage ( SQL QUERY ) aufbauen
        $sql = "SELECT 
        		CAT.idcat AS idcat, 
        		name 
        	FROM 
        		".$cfg["tab"]["cat"]." AS CAT, 
        		".$cfg["tab"]["cat_lang"]." AS CATLANG 
        		
               	WHERE 	CAT.idcat = ".$catPrev."
               		AND CAT.idcat = CATLANG.idcat
               		AND CATLANG.idlang = '$lang'
               		AND CATLANG.visible = '1'";
               		
        // Datenbankabfrage durchführen
        $db->query($sql);


        // die einzelnen Recordsets der Datenbankabfrage durchgehen
        while ( $db->next_record() ) {
         
                // überprüfung, ob schon ein Eintrag in der Ausgabevariabel ist
        	if ( strlen($sTmpStr) == 0 ) {
        	    // ... Nein, dann die Formatierung für den ersten Eintrag verwenden
        	    // und den Eintrag der Ausgabevariabel hinzufügen
	            $sTmpStr = $sTmpStr .  '[<a class="klein" href="front_content.php?idcat='.$db->f("idcat").'">Zurück zu '.$db->f("name").'</a>]';
	        }
	        else
	        {
	            // ... Ja, dann die Formatierung für die weiteren Einträge verwenden und
	            // den Eintrag der Ausgabevariabel hinzufügen
	            $sTmpStr = $sTmpStr .  ' - [<a class="klein" href="front_content.php?idcat='.$db->f("idcat").'">Zurück zu '.$db->f("name").'</a>]';	        
	        }  // end if
        } // end while
	               		


  // Ermittlung aller Kategorie IDs der ausgesuchten
  // Navigationsebene und speicherug in einem Array
  // $catIds = conDeeperCategoriesArray($catStart);


	$db2_sql = "	SELECT
				*
			FROM ". $cfg["tab"]["cat"] ." AS A
		
			WHERE
			
			  A.parentid = ". $catStart;

	// Abfrage ausführen
	$db2->query($db2_sql);

  	// Ermittlung aller Kategorie IDs der ausgesuchten
  	// Navigationsebene und speicherug in einem Array
	while ( $db2->next_record() ) {
       		$catIds[] = $db2->f("idcat");
	}



  // Überprüfung ob $catIds wirklich ein Array ist
  if ( is_array($catIds) ) {

    // die einzelnen IDs durchgegen
    foreach($catIds as $key=>$val) {

      // Ersten Eintrag überspringen, da es sich dabei umd
      // den Menupunkt selbst handelt und dieser nicht
      // Angezeigt werden soll.
      if ($key != 0) {

        
        // Datenbankabfrage ( SQL QUERY ) aufbauen
        $sql = "SELECT 
        		CAT.idcat AS idcat, 
        		name 
        	FROM 
        		".$cfg["tab"]["cat"]." AS CAT, 
        		".$cfg["tab"]["cat_lang"]." AS CATLANG 
        		
               	WHERE 	CAT.idcat = ".$val."
               		AND CAT.idcat = CATLANG.idcat
               		AND CATLANG.idlang = '$lang'
               		AND CATLANG.visible = '1'";

        // Datenbankabfrage durchführen
        $db->query($sql);


        // die einzelnen Recordsets der Datenbankabfrage durchgehen
        while ( $db->next_record() ) {
         
                // überprüfung, ob schon ein Eintrag in der Ausgabevariabel ist
        	if ( strlen($sTmpStr) == 0 ) {
        	    // ... Nein, dann die Formatierung für den ersten Eintrag verwenden
        	    // und den Eintrag der Ausgabevariabel hinzufügen
	            $sTmpStr = $sTmpStr .  '[<a class="klein" href="front_content.php?idcat='.$db->f("idcat").'">'.$db->f("name").'</a>]';
	        }
	        else
	        {
	            // ... Ja, dann die Formatierung für die weiteren Einträge verwenden und
	            // den Eintrag der Ausgabevariabel hinzufügen
	            $sTmpStr = $sTmpStr .  ' - [<a class="klein" href="front_content.php?idcat='.$db->f("idcat").'">'.$db->f("name").'</a>]';	        
	        }  // end if
        } // end while
      } // if
    }  // end foreach
    // Ausgabevariabel schreiben, da nun alle Einträge behandelt wurden.
    echo '&nbsp;&nbsp;' . $sTmpStr;
  } // end if (is_array)


}
?>
Als erstes sucht ihr die Kategorie aus, die angezeigt wird. dabei werden keine Unterkategorien mit aufgeschlüsselt, sondern nur die 1. ebene der ausgewählten Kategorie.

Mit der zweiten Kategorie wählt ihr eine "Zurück" Kategorie aus, die in der anzeige dann ganz links steht. Wenn diese auf --kein-- bleibt, wird der Eintrag bei der ausgabe übersprungen.

Wenn Ihr zwei oder mehrere dieser module in einem Template verwenden wollt müsst ihr

Code: Alles auswählen

CMS_VALUE[3100]
CMS_VALUE[3101]
CMS_VAR[3100]
CMS_VAR[3101]
für jede weitere Instanz abändern.

z.B. für Modul 2 dieses Codes in

Code: Alles auswählen

CMS_VALUE[3200]
CMS_VALUE[3201]
CMS_VAR[3200]
CMS_VAR[3201]
btw. das Modul ist aus einem anderen Hauptnavi entstanden ... aber ka welche das nochmal genau war, dies war eigentlich nur mal ne Testentwicklung um was zu demonstrieren ...

naja, in Zukunft muß cih genauer dokumentieren was ich von wo nehme ...

so long

Stefan bürk
Contenido 4.4.4/4.4.5 - Contenido 4.5.x

Module:sn_multinav für 4.5.x

Zeitgeist
Beiträge: 205
Registriert: Fr 5. Sep 2003, 09:47
Wohnort: Hamburg
Kontaktdaten:

snief

Beitrag von Zeitgeist » Do 24. Jun 2004, 09:48

Hallo,
eigentlich genau was ich brauche...soifz

Problem:
-14 Kategorien
-ausgelesen werden aber nur 13 - 1. Kategorie wird übergangen

Eigenschaften der 1. Kat. sind identisch zu den anderen 13

Kann es am Platz liegen? Dass es auf 2 Zeilen begrenzt ist und nicht alle da rein bekommt? Also die Namen der Kat`s zu lang sind?

Ob man es um die Angaben
XX Kat`s nebeneinander
XX Kat`s untereinander

erweitern könnte?

bischen Ratlos (wie gewohnt)
TimeSpirit

Zeitgeist
Beiträge: 205
Registriert: Fr 5. Sep 2003, 09:47
Wohnort: Hamburg
Kontaktdaten:

n

Beitrag von Zeitgeist » Do 24. Jun 2004, 09:54

Nachtrag

-Lebendtiere
--Riesenschlangen
--Nattern
--Leguane

-Lebendtiere <- ist als Auszulesende Kat gewählt
--Riesenschlangen <- wird übersprungen
--Nattern <- ab hier wird gelistet

...um es genauer zu definieren :o

Zeitgeist
Beiträge: 205
Registriert: Fr 5. Sep 2003, 09:47
Wohnort: Hamburg
Kontaktdaten:

..

Beitrag von Zeitgeist » Do 24. Jun 2004, 14:33

hmm...grübel

// Ersten Eintrag überspringen, da es sich dabei umd
// den Menupunkt selbst handelt und dieser nicht
// Angezeigt werden soll.
if ($key != 0) {

geändert in
if ($key != 1) {

zeigt die Riesenschlangen an und lässt dafür die Nattern (2. Kat) aus

grübel grübel...ratlosigkeit

Zeitgeist
Beiträge: 205
Registriert: Fr 5. Sep 2003, 09:47
Wohnort: Hamburg
Kontaktdaten:

Beitrag von Zeitgeist » Fr 25. Jun 2004, 10:51

snief...hat keiner eine Idee, wie ich auch die Riesenschlangen angezeigt bekomme?

SkyBlader
Beiträge: 303
Registriert: Do 18. Mär 2004, 16:23
Wohnort: Ratingen / NRW
Kontaktdaten:

Beitrag von SkyBlader » Fr 25. Jun 2004, 16:21

ist die kategorie online, ein startatikel darin enthalten und auch online gesetzt ?
Contenido 4.4.4/4.4.5 - Contenido 4.5.x

Module:sn_multinav für 4.5.x

Zeitgeist
Beiträge: 205
Registriert: Fr 5. Sep 2003, 09:47
Wohnort: Hamburg
Kontaktdaten:

Beitrag von Zeitgeist » Fr 25. Jun 2004, 16:49

oh, ich wurde erhört... :shock:

latürnich ist die Kat Online und n Startartikel vorhanden der selbst auch online ist....wie geschrieben, hat die Einstellungen/Eigenschaften wie die anderen auch...das macht mich ja so ratlos

Zeitgeist
Beiträge: 205
Registriert: Fr 5. Sep 2003, 09:47
Wohnort: Hamburg
Kontaktdaten:

Beitrag von Zeitgeist » So 27. Jun 2004, 22:37

Das Modul hat seltsame Eigenarten(!)

Ich hab nun als erstes (vor Riesenschlangen) ne "Dummy Kat" angelegt...
dafür wird mir die 1. Kat (nach Dummy) nun ganz als letztes angezeigt..

reihenfolge haut nicht hin...purzelt irgendwie durcheinander....wenigstens werden nun alle angezeigt (ausser der Dummy)

Greets
TimeSpirit

Gesperrt