Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Themes & Theming ›

Drupal 6 | Lösung: Freistehendes Untermenü

Eingetragen von NetWorks (52)
am 16.07.2009 - 00:32 Uhr in
  • Themes & Theming
  • Drupal 6.x

Hallo,
ich befinde mich seit einigen Tagen auf dem Drupal-Way und bin doch recht begeistert. Dennoch bin ich auf ein Problem gestoßen.
Vorab: Ich hoffe, dass ich im richtigen Forum gelandet bin.

Mein Problem:
Ich wollte an einem Ort der Website das Hauptmenü einbinden - und zwar nur die erste Ebene. Das funktioniert soweit (ist ja Standard) jedoch wollte ich nun an einem anderem Ort die Untermenüs einbinden und hier kamen die Probleme, denn:
- beim Untermenü darf die erste Ebene nicht autauchen wegen der Verdoppelung.
- Das Untermenü muss auf jeder Seite angezeigt werden, die zu einem bestimmten Menüpunkt gehört
- das ganze mit Anzeige der momentanen Seite im Untermenü (Das ist nicht wirklich ein Problem, da dies ja ebenfalls im normalen Menü über CSS geht)

Die Suche:
Also ich hab echt lange gesucht und nichts wirklich gutes gefunden ausser vielleicht http://drupalmodules.com/module/menu-block , aber so, wie ich das verstanden habe, muss man für jede Kategorie Untermenüs erstellen, was ich als nicht sehr benutzerfreundlich empfand.

Die Lösung, wie sie sein soll:
Man nimmt sich das Menü-Array vor, klabustert es auseinander und schreibt eine Theming-Funktion, die man um das Attribut "Level" oder "Anfangstiefe" erweitert, um später das Menü so -und mit allen Funktionen- angezeigt zu bekommen, wie es Drupal mit einem Komplettmenü kann.

Meine Lösung (Nachteile):
Vorneweg: die Lösung ist Dirty, aber funktioniert ;-) . Dennoch will ich die Nachteile aufzeigen, weil es nichts stressigeres gibt, als etwas zu installieren, um später zu merken, dass das Installierte nicht das erfüllt, was man erwartet ;-). An dieser Stelle möchte ich auch gleich sagen, dass ich WEISS, dass es schlecht ist (Selbst das Forum hat den Codeblock verschluckt, da er zu lang war und ich keine Schleife genutzt habe). Dennoch erfüllt es meine Anforderungen. Sollten sich diese erhöhen, werde ich es verbessern.
- nur bis zur 4. Ebene (erweiterbar)
- nur die Menüpunkte, die jeweils 1 Ebene unter (tiefer) der Ebene des Dokuments sind, werden angezeigt
- und man sieht auch nicht von vornherein, dass sich unter einem Menüpunkt weitere Menüpunkte verbergen

Beispiel:
- Hauptlink A
--- Untermenüpunkt A-1
--- Untermenüpunkt A-2
----- Untermenüpunkt A-2-1
----- Untermenüpunkt A-2-2
----- Untermenüpunkt A-2-3
--- Untermenüpunkt A-3
----- Untermenüpunkt A-3-1
- Hauptlink B
- Hauptlink C

Was uns interessiert ist nur das Untermenü. Die Hauptlinks befinden sich an einer anderen Stelle:

--- Untermenüpunkt A-1
--- Untermenüpunkt A-2
----- Untermenüpunkt A-2-1
----- Untermenüpunkt A-2-2
----- Untermenüpunkt A-2-3
--- Untermenüpunkt A-3
----- Untermenüpunkt A-3-1

Das Problem ist, wenn ich auf Untermenüpunkt A-2-2 bin, wird folgende Struktur angezeigt:
--- Untermenüpunkt A-1
--- Untermenüpunkt A-2
----- Untermenüpunkt A-2-1
----- Untermenüpunkt A-2-2 <-- Aktive Seite
----- Untermenüpunkt A-2-3
--- Untermenüpunkt A-3

----- Untermenüpunkt A-3-1 fehlt quasi (weil --- Untermenüpunkt A-3 nicht offen ist).

Meine Lösung (Vorteile):
- Die "Kategorie", zum Beispiel "Hauptlink A" ist verfügbar
- Unterscheidung Externer/Interner Link und recht performant gecodet
- HTML-Ausgabe nachvollziehbar und änderbar (bei zum Beispiel custom-Klassen)
- der "Weg zur Datei" wird angezeigt (ähnlich eines Breadcrumbs). Ich vergebe zum Beispiel ID="current" für aktive Menüpunkte. Nehmen wir wieder das Beispiel mit A-2-2 als aktive Seite:

--- Untermenüpunkt A-1
--- Untermenüpunkt A-2 --> current
----- Untermenüpunkt A-2-1
----- Untermenüpunkt A-2-2 <-- Aktive Seite --> current
----- Untermenüpunkt A-2-3
--- Untermenüpunkt A-3

Ich hoffe, das hilft dem ein oder anderen und ich werde nicht gleich auseinandergenommen ;-) Konstruktive Kritik ist natürlich gerne gesehen.

Genug "geredet" - hier der Code:

AUFRUF (in der page.tpl.php), (Beispiel):

<?php
$nwShowMenu
= nwShowMenu('primary-links',1, 'html');
if (
$nwShowMenu) {
?>
<div class="rightMenu"><div class="rightTitle"><?=$nwShowMenu['activeParent'] ?></div>
<?php
   
print $nwShowMenu['links'];
?>

</div>
<?php } ?>

Wenn die aktive Seite keine Untermenüs hat (in unserem Fall z.Bsp. bei "Hauptlink B") gibt nwShowMenu() FALSE zurück.
Parameter:
- Navigation (hier 'primary-links')
- Level oder Tiefe, wo das Menü beginnen soll (hier Eins. Null wäre ein Hauptlink)
- Ausgabe (hier 'html').
- Möglichkeiten:
- leer (nicht angeben) oder 'raw' --> Ausgabe der angegebenen Tiefe (level) als Array
- 'html' --> Formatierte Ausgabe Links. Klassen können angepasst werden

Funktionen für die template.php
http://pastebin.com/f3affec05 /bzw. siehe unten die Datei (edit[stborchert]: der Filter kann mit solch langen Code-Blöcken anscheinend nicht umgehen)

Liebe Grüße

Lars

Edit:
Vielen Dank für das Edit an [stborchert] , bin gestern beinahe verzweifelt, weil ich nicht wusste, was ich falsch gemacht habe :-) Der Beitrag wollte einfach nicht erscheinen.

AnhangGröße
forumbeitrag_20090_codeteil2.txt7.21 KB
‹ RSS-Feed Frage Anpassen der "News"-Ausgabe auf der Startseite ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • Canvas Palette: Eine fertige Komponentenbibliothek für Drupal Canvas
  • Hilfe zu Updates oder Composer
  • Vergleich Drupal und Contao
  • [geloest] Blocks in Bootstrap nebeneinander darstellen und nicht untereinander
  • DrupalCamp Frankfurt 27-28 November 2026
  • Bitte mein Bentzerkonto löschen
  • Beim Aufruf einiger Inhalte erhalte ich folgende Fehlermeldung
  • Neuinstallation: vermutlich ein rewrite-Problem
  • Drupal CMS installieren
  • [erledigt]MP3 in Drupal 10 einbinden
  • (gelöst)Drupal 11 installieren
  • Titel ausblenden
Weiter

Neue Kommentare

  • Danke ich werde mir die
    vor 5 Wochen 3 Tagen
  • Vielen Dank für Ihren
    vor 5 Wochen 6 Tagen
  • Composer ist sehr ratsam
    vor 6 Wochen 1 Tag
  • Vielen Dank für den
    vor 6 Wochen 3 Tagen
  • Die alten CMS Vergleiche von contentmanager.de
    vor 6 Wochen 4 Tagen
  • Gut gemacht
    vor 6 Wochen 4 Tagen
  • Layout Builder etc. z.B. für Landing Pages
    vor 6 Wochen 4 Tagen
  • Links
    vor 6 Wochen 6 Tagen
  • Moin,wow, sehr gutes
    vor 7 Wochen 23 Stunden
  • Dass ist eine spannende
    vor 7 Wochen 1 Tag

Statistik

Beiträge im Forum: 250316
Registrierte User: 20567

Neue User:

  • Philiphelve
  • Robertspaft
  • drupalthemes

» Alle User anzeigen

User nach Punkten sortiert:
wla9466
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 19 Gäste online.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association