Horizontale Navigation?!!
Horizontale Navigation?!!
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??
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??
-
- Beiträge: 356
- Registriert: Do 15. Jan 2004, 21:32
- Wohnort: Mönchengladbach
- Kontaktdaten:
MODUL CHANGELOC
MODUL INPUT
MODUL OUTPUT:
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
für jede weitere Instanz abändern.
z.B. für Modul 2 dieses Codes in
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
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
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>";
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 ' ' . $sTmpStr;
} // end if (is_array)
}
?>
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]
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]
naja, in Zukunft muß cih genauer dokumentieren was ich von wo nehme ...
so long
Stefan bürk
snief
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
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
n
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
-Lebendtiere
--Riesenschlangen
--Nattern
--Leguane
-Lebendtiere <- ist als Auszulesende Kat gewählt
--Riesenschlangen <- wird übersprungen
--Nattern <- ab hier wird gelistet
...um es genauer zu definieren
..
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
// 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
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
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