Dynamische Navigation mit "selected" Styles

Sebigf

Erfahrenes Mitglied
Hallo zusammen!

Ich bin gerade dabei, eine dynamische Navigation zu basteln.
Struktur (Maske) sieht dabei wie folgt aus:

- Titel (Name des Navigationspunktes)
- Typ (Hauptnavigationspunkt, oder Unterkategorie von [die bisherig angelegten Einträge])
- URL (url halt ;))
- Position (kennt auch jeder)

Es soll also, hand von Typ möglich sein, verschachtelungen zu realisieren.

Beispiel:

Audi
- A3
- - Normale ausführungen
- - Sportback
- A4
- - ....
- - ....

Ich denke das Beispiel sollte gut zeigen, was ich meine.

Nun zu meiner Problemsituation:

Ich würde gerne kenntlich machen können, welche Seite gerade geöffnet ist.
Was vielleicht auch noch sehr wichtig währe, wenn ich z.b.

-> A3 -> Sportback

gewählt habe auch noch alles (A3 + alle Unternavigationen "aufgeklappt") zu sehen ist. Also würde ich mit parentIDs arbeiten in dem Fall.

Beispiel URL: http://www.dream4.de/demo_koobidemo/

Hat jemand eine Idee, wie ich das am besten umsetzen sollte ? Weis einfach nicht, wie ich anfangen soll. ;)

Danke
 
Mache dich mal mit dem Thema des Speicherns von hierarchischen Daten vertraut (siehe etwa Sitepoint – Storing Hierarchical Data in a Database) sowie der Auszeichnung und Formatierung dieser Daten als Navigationsmenü (siehe css.maxdesign.com.au). Des Weiteren solltest du dich noch für ein URL-Design entscheiden, das den Aufbau der Seite/Navigation wiederspiegelt. Das könnte die Sache etwas erleichtern.
Was die Markierung der aktuellen Position angeht, gibt es mehrere Möglichkeiten. Ich hatte schon mal eine in diesem Fall vielleicht hilfreiche Funktion veröffentlicht, die alles anhand eines Daten-Arrays erledigt, kann sie jedoch gerade nicht finden.
 
Guten Morgen Gumbo,

danke für deine Antwort.

- "Storing Hierarchical Data in a Database" kenne ich bereits und bin mit diesem Code vertraut.

- http://css.maxdesign.com.au -- Hier weis ich nicht genau, was du mir damit zeigen willst. Ideen für eine Navi oder eine Technik / Lösung für mein Problem ?

Ja, das mit der Struktur der URL ist so eine Sache...
1. Sie sollte die Navi erweitern / reduzieren können
2. Unter Umständen bereits beim anklicken eines "Hauptnavigationspunktes" eine neue Seite anzeigen.
 
Ich spinne gerade den Gedanken, das Ganze mit dem URL von Verzeichnisstrukturen zu arbeiten, denn dieser lässt sich einfach in seine Bestandteile zerlegen. Weiterhin solltest du mit Listen das Navigationsmenü strukturieren, da diese ebenfalls hierarchisch und dazu noch einfach zu erweitern sind.

Wo genau hapert es denn jetzt bei dir?
 
Zum Aufbau meiner Navi

Für den ganzen Navikasten nehme ich ein <div>.
Und für jede "innere" Zeile Nehme ich wiederum ein <div>

Der Code (Hauptstruktur) sieht zurzeit so aus:

HTML:
<div>
<div class="navi_item"> - Home </div>
<div class="navi_item"> - News </div>
<div class="navi_item"> - Suche </div>
</div>
Die erweiterte Form, mit den Unternavigationen, würde so aussehen:

HTML:
<div>
<div class="navi_item"> - Home </div>
<div class="navi_item"> - News </div>
<div class="navi_subitem"> - Archiv </div>
<div class="navi_subitem"> - TOP10 </div>
<div class="navi_item"> - Suche </div>
</div>

Die Klasse navi_subitem ist im Normalem Zustand nicht sichtbar, also hidden.

Mein Problem ist im Moment, wie ich das ganze mit den URL's strukturieren soll.
Ich würde das ganze jeweils mit den ID's aus der Datenbank bestimmen, also:

index.php?show=nav&id=1 (news)

Nur dabei sollte eben auch, wenn gewählt, eine URL angesteuert werden, die dann zusammen mit den "neuen" Unternavigationen angezeigt werden kann.

Und was vielleicht noch etwas tricky werden könnte, ist vielleicht die Abfrage durch die rekursiven IDs. Also, wie die IDs ausgewertet werden, anhand der parentIDs.

Ich denke das wärs auch, mit den Problemen ;)
 
Wie bereits erwähnt, würde ich das Ganze als Liste auszeichnen, etwa:
HTML:
<ul id="nav">
	<li><a href="/">Home</a></li>
	<li><a href="/news/">News</a><ul>
		<li><a href="/news/archiv/">Archiv</a></li>
		<li><a href="/news/top10/">TOP10</a></li>
	</ul></li>
	<li><a href="/suche/">Suche</a></li>
</ul>
Das URL-Design hätte ich ebenfalls so gewählt, wie ich es bereits erwähnt habe: Die einzelnen Argumente sind durch Verzeichnisseparatoren getrennt und können dadurch einfach aufgeschlüsselt werden. Und anhand dieser Argumente könnte wiederum der Inhalt ausgewählt werden.
 
Ja, währe mit Sicherheit so der einfachste Weg, da es auch übersichtlich bleibt.
Um noch einmal sicher zu gehen...

Wie würdest du das mit dem aufschlüsseln handeln ?
Ich frage, weil ich es ja in dem Fall "verschachtelt" vornehmen muss. (parentID)

Soll ich alles mit explode aufschlüsseln und jeweils durch die Position mit den IDs aggieren ?

Danke
 
Wie würdest du das mit dem aufschlüsseln handeln ?
Ich frage, weil ich es ja in dem Fall "verschachtelt" vornehmen muss. (parentID)
Die Frage wird sein, mit welcher Struktur die Daten in der Datenbank gespeichert sind.
 
Bisher habe ich nur eine "Roh-Version" meines geplanten Aufbaus.

Code:
  `id` int(6) NOT NULL auto_increment,
  `bezeichnung` varchar(150) NOT NULL default '',
  `url` varchar(255) NOT NULL default '',
  `typ` varchar(10) NOT NULL default 'top',
  `target` varchar(7) NOT NULL default '_self',
  `access_level` varchar(255) NOT NULL default '',
  `position` int(3) NOT NULL default '0',
  `parentID` int(6) NOT NULL default '0',
  `expand` char(3) NOT NULL default 'no',
  `status` char(3) NOT NULL default 'no',

Eine kleine Erklärung...

typ = Hauptnavigationspunkt / Unternavigation von... (angelegte Punkte)
access_level = Benutzergruppen, die diesen Punkt sehen dürfen
expand = soll dieser Punkt direkt angezeigt werden oder erst nach dem selektieren der übergeordneten Navigation ?!

Der Rest sollte sich von selbst erklären... :)

Ich hoffe du kannst mir da helfen...

Danke
 
Nun ja, der erwähnte Artikel beschreibt bereits einen Algorithmus zur Ermittlung des absoluten Pfades. Hast du es schon damit probiert?
 
Zurück