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 - 01: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

  • Neuinstallation: vermutlich ein rewrite-Problem
  • Drupal CMS installieren
  • [erledigt]MP3 in Drupal 10 einbinden
  • (gelöst)Drupal 11 installieren
  • Titel ausblenden
  • Ich brauche dringen Hilfe zu Updates oder ggf. wwie geht Composer?
  • Dynamische Ansicht von Seiteninhalt (als Tabelle?)
  • Vergabe von Berechtigungen für bestimmte Rollen; mir fehlt der Haken bzw. das „Veröffentlicht“
  • Medien und andere Daten mit Feeds von Drupal 7 auf Drupal 10 migrieren
  • Rolle erstellen nicht zu finden
  • für drupal11 ein Slider Modul
  • [gelöst] W3CSS Paragraphs Views
Weiter

Neue Kommentare

  • Was für einen Server benutzt
    vor 3 Tagen 11 Stunden
  • Wenn die Subdomain auf
    vor 5 Tagen 10 Stunden
  • ordnerstruktur
    vor 5 Tagen 20 Stunden
  • Die Subdomain muß auf den
    vor 1 Woche 1 Tag
  • Verwende doch das Tag dafür,
    vor 4 Wochen 3 Tagen
  • Guckst du hier: step by step
    vor 4 Wochen 2 Tagen
  • Guckst du hier: step by step
    vor 4 Wochen 2 Tagen
  • Ich habe ja keine Angst vor
    vor 5 Wochen 5 Tagen
  • Ist grundsätzlichmachbar – aber nichts für „einfach mal schnell“
    vor 6 Wochen 7 Stunden
  • Vielen Dank erst einmal, aber
    vor 6 Wochen 2 Tagen

Statistik

Beiträge im Forum: 250289
Registrierte User: 20513

Neue User:

  • Scottteday
  • MichaelPeeno
  • Pavlotog

» 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 40 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