Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Benutzerhandbuch › Fortgeschrittene › Tutorials & How To's - Tipps & Tricks › Einrichten eines einfachen, statischen Menüsystems ›

Geteiltes Menü erstellen

Eingetragen von eigentor (1424) am 29.09.2007 - 13:49 Uhr

menuEine häufig benötigte Menüstruktur ist folgende, die auch in dem nebenstehenden Bild dargestellt wird.

Man möchte ein horizontales Hauptmenü haben, und pro Unterseite dann einen Block links oder rechts, in dem die Unter-Menüpunkte ab dem zweiten Level angezeigt werden.

Eigentlich auch gar kein Problem: Man erzeugt das horizontale Menü als Primary Links, und erstellt für jede Seite ein eigenes Menü, das dann als Block an den entsprechenden Stellen eingeblendet wird. Aber genau da ist der Haken. Wenn der Menüblock auf einer Seite eingeblendet werden soll, dann passiert das nicht von alleine, sondern man muss es in der Konfiguration des Blockes eintragen.

Sinn würde es ja machen, wenn der Block dann automatisch auf jeder Seite angezeigt würde, die einem Submenü hinzugefügt wird. Dies kann man mit dem Folgenden kleinen Snippet erreichen:

<?php
if ($_GET['q'] == 'node/3') {
  return
TRUE;
}
$item = menu_get_item(NULL, $_GET['q']);
while (
$item['pid'] && ($item = menu_get_item($item['pid'])));
return (
$item['title'] == 'Name des Submenüs');
?>

Man muss natürlich dafür "Diesen Block nur auf den aufgelisteten Seiten anzeigen:" auf PHP stellen: "Nur anzeigen, wenn der folgende PHP-Code TRUE zurückgibt (PHP-Modus für Experten)".

Der obere Teil mit node/3 gibt die Seite an, die über den Primary Link erreicht wird, da diese ja nicht im Submenü enthalten ist. Bei "Name des Submenüs" tragt ihr dann den Namen des jeweiligen Submenüs (natürlich für jeden Block ein anderer) ein. Leerzeichen sind hier erlaubt.

Es wäre sicherlich schön, noch eine Verbindung zwischen dem jeweiligen Submenü und dem jeweiligen Primary Link zu haben, da man das Ganze dann noch vereinfachen könnte, aber so funktioniert es auf jeden Fall erstmal. Vielleicht postet ein Entwickler ja noch Verfeinerungen.

Vielen Dank an Thilo Wawrzik für die Erstellung des Snippets.

AnhangGröße
menu-geteilt-3.jpg28.48 KB
‹ Einrichten eines einfachen, statischen Menüsystems nach oben Erstellen von Patches ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Wozu der Umweg? Diesen Block

Eingetragen von Tobias Bähr (4019)
am 29.09.2007 - 16:45 Uhr

Wozu der Umweg? Diesen Block nur auf den aufgelisteten Seiten anzeigen: Node/3! Fertig! Ohne PHP!

  • Anmelden oder Registrieren um Kommentare zu schreiben

Alternative

Eingetragen von profix898 (140)
am 29.09.2007 - 17:24 Uhr

@Spartacus: Es geht darum, den Block automatisch auf allen Seiten anzuzeigen, die von dem Submenü aus verlinkt sind. Nicht nur auf node/3 ...

Eine Alternative zu dieser Lösung ist das Modul 'Menu Block Split' (http://drupal.org/project/menu_block_split), mit dem eine ähnliche Aufteilung möglich ist. Voraussetzung ist hier aber, dass alle Menüpunkte in EINEM Menü enthalten sind und nicht über 'Primary links' und das Navigationsmenü verteilt sind.

  • Anmelden oder Registrieren um Kommentare zu schreiben

ach kapitsche logisch wenn

Eingetragen von Tobias Bähr (4019)
am 09.01.2009 - 13:20 Uhr

ach kapitsche logisch wenn ich auf ein Link klicke, verschwindet der ja,stimmt! es sei den ich trag jedes mal die URL mit ein, aber das wäre ja Zeitverschwendung!

  • Anmelden oder Registrieren um Kommentare zu schreiben

Menu Block Split - Patch

Eingetragen von Rolfy (105)
am 14.02.2008 - 17:20 Uhr

Das Modul 'Menu Block Split' in der Version 5.x-1.1 hat einen Bug. Dieser verursacht, daß der Block mit dem Untermenü beim Anzeigen der Seite des Untermenüpunktes nicht mehr angezeigt wird. Nur die Untermenüpunkte des zuerst erstellten Hauptmenüpunkt werden noch angezeigt.

Hier ein Beispiel, das den Bug verständlich aufzeigt:

- Du machst zuerst einen Menüpunkt 'Obst' in der ersten Menüebene und dazu eine Seite 'Obst'.
- Dazu machst Du einen untergeordneten Menüpunkt 'Äpfel' und eine Seite dazu.
- Dann machst Du eine Seite 'Gemüse' mit einer entsprechenden Seite.
- Dazu machst Du einen untergeordneten Menüpunkt 'Karotten' und eine Seite dazu.
- Wenn dann die Seite 'Karotten' angezeigt wird, verschwindet das untergeordnete Menü. Wenn es unter 'Gemüse' also noch weitere untergeordnete Menüpunkte wie z. B. 'Sellerie' gäbe, könnte man nicht direkt darauf zugreifen, sondern müsste über den 'zurück-Button' des Browsers oder den Hauptmenüpunkt 'Gemüse' gehen.

Hier ist ein Patch um den Bug zu beheben:

http://drupal.org/node/201822#comment-672746

Oder hier gleich der Patch:

function menu_block_split_is_child($parent, $child) {
  $item = menu_get_item($parent);
  if (is_array($item['children'])) {
    if (in_array($child, $item['children'])) {
      return TRUE;
    }
    else {
      foreach ($item['children'] as $c) {
        if (menu_block_split_is_child($c, $child) == TRUE) {
          return TRUE;
        }
      }
    }
  }
return FALSE;
}

Diesen Code in der Datei 'menu_block_split.module' anstatt des dort vorhandenen Codes ab
'function menu_block_split_is_child($parent, $child) ...
einsetzen (letzte Funktion in der Datei).

  • Anmelden oder Registrieren um Kommentare zu schreiben

Also nach langem

Eingetragen von PowerMan (274)
am 03.09.2008 - 00:52 Uhr

Also nach langem rumprobieren habe ich herausgefunden, das diese Funktionalität auch ohne das Modul "Menu Block Split" funktoniert.
Zu Eräuterung folgende Struktur wollte ich umsetzen:

Hauptpunkt A

  • Unterpunkt A1
  • Unterpunkt A2
  • Unterpunkt A3

Hauptpunkt B

  • Unterpunkt B1
  • Unterpunkt B2
  • Unterpunkt B3

Hauptpunkt C

  • Unterpunkt C1
  • Unterpunkt C2
  • Unterpunkt C3

Als erstes habe ich die Hauptmenüpunkte als "Primary Links" angelegt. Dabei zeigt der Link immer jeweils auf den ersten Unterpunkt. Anschließend musste ich noch 3 weitere Menüs für die Unterpunkte der jeweiligen "Pirmary Links" anlegen.

Jetzt kommt das entscheidene. Alle Inhalte, welche zu einem Hauptmenüpunkt und deren Untermenüpunkte gehören, bekamen einen URL Prefix im URL-Alias (z.B. haupt-a/unterpunkt-a1 oder haupt-b/unterpunkt-b1).

Nun geht zur Block-Administration und legt die 3 zusätzlichen Menüs in die linke Leiste. Jetzt muss in der Block-Konfiguration für jeden der 3 Blöcke nur noch unter "Sichtbrakeitseinstellungen" eingestellt werden, dass der Block nur bei aufgelisteten Seiten angezeigt werden soll. In den entsprechenden Feld wird dann einfach haupt-a/* eingetragen werden.

Die URL-Aliase habe ich mit dem Modul "Pathauto" unter Verwendung der Taxonomie automatisch erstellen lassen.

Es gibt bei dieser Methode genau wie mit dem Modul "Menu Block Split" das problem, das man den "Primary Link" nicht nocheinmal ein das Untermenü mit aufnehmen sollte, da hier untergeortnete Menüpunkte dann nicht mehr aufgeklpatt werden.

--------
Active-Media-Production
Individual Web Development and Design

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hab das Problem auch gehabt

Eingetragen von Helmholtz (2)
am 08.01.2009 - 22:35 Uhr

Hab das Problem auch gehabt und folgendermaßen gelöst (Drupal 6)

Primary Links erstellt und ganz normal ausgegeben. Dann jeweils eine zweite Ebene hinzugefügt und folgenden Code in die Template.php:

function themeSubMenu($values){
global $base_path;
$output = '';
$class='';
$menArr = menu_tree_page_data($values);
foreach($menArr as $key=>$value){
if($value['link']['in_active_trail'] == 1){
foreach($value['below'] as $subKey=>$subValue){
         if($subValue['link']['in_active_trail'] == 1){
        $class="hl";
        }
         $output .= '<li><a href="'.$base_path.drupal_get_path_alias($subValue['link']['link_path']).'"'.
                        .' class="'.$class.'">'.$subValue['link']['link_title'].'</a></li>';
        }
}
}
return $output;
}

Das ganze in der page.tpl.php dann dort wo das Submenü hin soll mit:

print themeSubMenu('primary-links');

aufrufen.

Das ist momentan nur für bis zu 2 Ebenen gedacht, kann aber auch erweitert werden.

mehr Details dazu:

http://www.ebugz.de/drupal-6-getrenntes-untermenu/

  • Anmelden oder Registrieren um Kommentare zu schreiben

Gute Lösung

Eingetragen von eigentor (1424)
am 09.01.2009 - 07:32 Uhr

Nicht schlecht. Ich glaube allerdings, mit dem Erscheinen von http://drupalmodules.com/module/menu-block Menu Block hat sich mein Artikel überholt...

Nölle alaaf!

  • Anmelden oder Registrieren um Kommentare zu schreiben

Danke für den Hinweis auf das Modul

Eingetragen von Helmholtz (2)
am 09.01.2009 - 11:37 Uhr

Denke damit geht es dann natürlich deutlich komfortabler ;) wenn auch mit dem Nachteil eines weiteren Moduls auf der Seite.

Grüße

  • Anmelden oder Registrieren um Kommentare zu schreiben

In welche Datei kopiert man

Eingetragen von Fragender10 (8)
am 06.06.2010 - 10:46 Uhr

In welche Datei kopiert man den Code denn rein?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Das stand in der Antwort 3

Eingetragen von wla (9456)
am 06.06.2010 - 21:08 Uhr

Das stand in der Antwort 3 weiter oben: in die template.php Datei Deines Themes.
Wenn diese Datei nicht da ist, selbst im Verzeichnis Deines Themes eine anlegen.

Beste Grüße
Werner

  • Anmelden oder Registrieren um Kommentare zu schreiben

Menu Block

Eingetragen von eigentor (1424)
am 06.06.2010 - 23:09 Uhr

Also wie gesagt: erstmal Menu Block probieren, dann rumcoden :)
Seit es Menu Block gibt, habe ich bisher noch keine Situation gefunden, wo ich was anderes gebraucht habe.
Ist evtl. ein bisschen fummlig, bis man begriffen hat, welche Ebene des Menüs man anspricht, aber dann lüppt es wie ein Golf 2.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Mit Context gehts auch

Eingetragen von hermx (256)
am 23.07.2010 - 10:35 Uhr

Submenü-Blöcke kann man so auch ganz gut mit dem Modul Context steuern. Man hat dann nebenbei die Funktionalität von Context auch noch für andere Zwecke (z.B. dynamische Templates für spezielle Seiten) zur Verfügung.
Man erstellt dazu einen Context für jedes Hauptlink (z.B. durch Pfad getriggert) uund fügt dann die gewünschten Menüblöcke als Action zu den gewünschten Seiten dazu.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • Wie erlaubt man neuen Benutzern auf die Resetseite zugreifen zu dürfen.
  • Probleme mit der darstellun der ogg:image Tags.
  • Drupal-Forks und ihre Schwächen/Stärken
  • Lokale Entwicklungsumgebung auf Windows
  • [gelöst]Abhängigkeiten zweier oder mehrerer Inhaltstypen
  • Drupalcenter tot?
  • Was kann ich gegen ständige Blutergüsse tun?
  • Mir gefällt die Drupal Symfony und deren Composer
  • Mir ist da was aufgefallen ;)
  • Matomo Installation
  • Verständnisfrage private_files in Drupal
  • [gelöst] Drupal 7 Forum Beitrag mit Bilder einstellen
Weiter

Neue Kommentare

  • Danke für die ausführliche
    vor 1 Stunde 32 Minuten
  • Also Leute ich freue mich ja
    vor 2 Stunden 14 Minuten
  • Was du brauchst ist der
    vor 2 Stunden 20 Minuten
  • Kommt drauf an
    vor 2 Stunden 41 Minuten
  • Kontextfilter und Relationen sind der richtige Ansatz
    vor 19 Stunden 59 Minuten
  • Zusatzfragen
    vor 1 Tag 21 Stunden
  • DDEV verwaltet Container, sowohl Docker als auch andere
    vor 1 Tag 21 Stunden
  • Entwicklungsumgebung ist nicht nur Server
    vor 1 Tag 21 Stunden
  • Danke
    vor 3 Tagen 4 Stunden
  • [gelöst] Danke!
    vor 3 Tagen 4 Stunden

Statistik

Beiträge im Forum: 250051
Registrierte User: 20361

Neue User:

  • LilliNELP
  • Wavermype
  • tom082

» Alle User anzeigen

User nach Punkten sortiert:
wla9456
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3855
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 1 Benutzer und 9 Gäste online.

Benutzer online

  • dinmikkith
DrupalCenter durchsuchen:

Benutzerhandbuch

  • FAQ - Häufig gestellte Fragen.
  • Links & Downloads
  • Über Drupalcenter.de und das deutschsprachige Benutzerhandbuch
  • Über Drupal
  • Einsteiger
  • Fortgeschrittene
    • Best Practice - Drupal Sites - Guidelines
    • Die beliebtesten Themes und Module
    • Tutorials & How To's - Tipps & Tricks
      • Kurztipps - Dinge die Stunden sparen können.
      • Notfallpläne - Tipps die Deine Drupalinstallation retten können
      • Anleitung zur Erstellung eines einfachen Kontaktformulars
      • Arbeiten mit dem Drupal Taxonomie-System [beinhaltet veraltete Inhalte]
      • Bearbeiten-Tab zu jeden Block hinzufügen
      • Block View mit Argument
      • Das Tagebuch einer Site
      • Drupal 6 - Automatisch unterschiedliche Bildgröße bei Teaser und Artikel
      • Drupal 6 - Eigene CSS Datei in ein Theme integrieren
      • Drupal 6 - Einfache Bildergalerie mit Image und Lightbox2
      • Drupal 6 - Einrichten eines Kalenders
      • Drupal 6 - Google Adsense ohne Zusatzmodul einbinden
      • Drupal 6 - Hauptnavigation mit DropDown Effekt ab Ebene Zwei
      • Drupal 6 - ImageMagick mit XAMPP Lite nutzen
      • Drupal 6 - Imagefield mit Imagecache und Colorbox
      • Drupal 6 - Installation FCK Editor
      • Drupal 6 - Installieren der WYSIWYG API inkl. Editoren
      • Drupal 7: mehrere Bilder in Node: 1 Bild in Anrisstext
      • Drupal Code Highlighting in Redmine Projektarchiv (CodeRay)
      • Drupal Theming: JavaScript einhängen in Abhängigkeit von Page-Variablen
      • Drush - Das Schweizermesser für Drupal auf Kommandozeile
      • Einfaches und erfolgreiches Patchen unter Windows
      • Eingabeformat & Inputfilter
      • Einrichten eines einfachen, statischen Menüsystems
        • Geteiltes Menü erstellen
      • Erstellen von Patches
      • Gallery mit CCK und Views erstellen (Drupal 5)
      • Header image Modul einrichten
      • Inhaltsübersicht für einen User mit einem View erstellen
      • Javascript und CSS-Dateien einbinden
      • Kontaktformular mit Jquery aufwerten
      • Leitfaden zur Erstellung von Suchmaschinenoptimierten Drupal-Sites
      • Mac OSX - Backupskript für Websites auf MAMP
      • Module updaten via Shell auf Windows
      • Module übersetzen
      • Perl-Script zum Erzeugen einer statischen Kopie einer Drupal-Website
      • Portierung eine Themes von openwebdesign.org
      • Prozentbalken bei Views (Balkendiagramm)
      • Themen eines Node-Formulars
      • Titel mit Stil
      • Umkreissuche mit Location- und Views-Modul
      • Usergalerie mit ImageCache, CCK, Views + Thickbox
      • Userprofil mit Usernodes erstellen
      • Validierung von Usereingaben bei Nodes
      • Variation vom Showroom auf drupalcenter.de
      • View mit Eingabeformular für neue Beiträge
      • WebSVN mit Drupal Code Highlighting
      • Zusätzliche Submit-Schaltfläche in Node-Formularen
      • i18n Language Switcher Block, die Links mit den Flaggen themen
      • ui.slider als Ersatz für den Ajax-Pager von Views
      • Zugriffsbeschränkungen für Nodes - eine Übersicht der Möglichkeiten
  • Entwicklung von Modulen und Themes
  • Drupalcenters Community
  • Drupal 7 Video-Trainings (Deutsch)
  • Drupal-Testumgebung erstellen
  • Drupal 6 Module
  • Drupal 7 Module
  • Drupal Screencasts auf deutsch
  • Archiv

Das Copyright des deutschsprachigen Drupal-Benutzerhandbuches unterliegt den jeweiligen Autoren. Übersetzungen des englischsprachigen Drupal-Benutzerhandbuches unterliegen der Creative Commons License, Attribution-ShareAlike 2.0.

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