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

  • für drupal11 ein Slider Modul
  • [gelöst] W3CSS Paragraphs Views
  • Drupal 11 neu aufsetzen und Bereiche aus 10 importieren
  • Wie erlaubt man neuen Benutzern auf die Resetseite zugreifen zu dürfen.
  • [gelöst] Anzeigeformat Text mit Bild in einem Artikel, Drupal 11
  • Social Media Buttons um Insteragram erweitern
  • Nach Installation der neuesten D10-Version kein Zugriff auf Website
  • Composer nach Umzug
  • [gelöst] Taxonomie Begriffe zeigt nicht alle Nodes an
  • Drupal 11 + Experience Builder (Canvas) + Layout Builder
  • Welche KI verwendet ihr?
  • Update Manger läst sich nicht Installieren
Weiter

Neue Kommentare

  • melde mich mal wieder, da ich
    vor 2 Wochen 14 Stunden
  • Hey danke
    vor 2 Wochen 1 Tag
  • Update: jetzt gibt's ein
    vor 2 Wochen 2 Tagen
  • Hallo, im Prinzip habe ich
    vor 2 Wochen 6 Tagen
  • Da scheint die Terminologie
    vor 2 Wochen 6 Tagen
  • Kannst doch auch alles direkt
    vor 3 Wochen 3 Tagen
  • In der entsprechenden View
    vor 3 Wochen 3 Tagen
  • Dazu müsstest Du vermutlich
    vor 3 Wochen 3 Tagen
  • gelöst
    vor 6 Wochen 11 Stunden
  • Ja natürlich. Dass ist etwas,
    vor 6 Wochen 1 Tag

Statistik

Beiträge im Forum: 250233
Registrierte User: 20453

Neue User:

  • ByteScrapers
  • Mroppoofpaync
  • 4aficiona2

» Alle User anzeigen

User nach Punkten sortiert:
wla9461
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 29 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