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

Unerklärliches Verhalten bei "Aktiv"-Stellung des Menüs

Eingetragen von Pfoto (25)
am 14.06.2007 - 23:32 Uhr in
  • Themes & Theming

Hi zusammen!

Verzweifelt versuche ich eine 3-fach strukturierte
Menüebene zu erreichen, bei der von den Eltern-Elementen
bis zum letzten Kind eine Klasse .active gesetzt wird.




(Die Menüs sind dabei "zerschnitten" an verschiedenen
Orten auf der Seite)




Das merkwürde:
Ganz wenige Menüs haben exakt das gewünschte Verhalten,
_alle_ anderen Menüeinträge nicht.
Dabei habe ich auch das Module "Sliced Menu" ausprobiert;
auch hier der selbe Fehler -- als würde hier ein Bug
in einer Hauptfunktion sein.




Das Thema "Aktivmachung eines Menüpunktes" wurde ja schon
besprochen und ich habe auch den weiter vorne geposteten
Code in die template.php eingebaut. Aber warum dieses
(für mich) nicht nachvollziehbare Verhalten?





Ist jemand schon mal was ähnliches aufgefallen? oder
noch besser: wie kann ich diesen Fehler beheben?



Dank und Gruß
Pfoto



P.S:




Ich verwende diesen Code in der template.php, aber auch
Versuche mit anderem Code brachten nicht das gewünschte
Ergebnis...

function phptemplate_menu_links($links) {
  if (!count($links)) {
    return '';
  }
  $level_tmp = explode('-', key($links));
  $level = $level_tmp[0];
  $output = "<ul class=\"links-$level\">\n";
   $i = 0;
  foreach ($links as $index => $link) {
    $i++;
    $output .= '<li';
    if ($i == 1) {     
      if (stristr($index, 'active')) {
        $output .= ' id="homeactive"';
      }
      $output .= ' class="home">' . l($link['title'], $link['href'],
      $link['attributes'], $link['query'], $link['fragment'],$absolute, $html = TRUE) ."</li>\n";
    } else {
      if (stristr($index, 'active')) {
        $output .= ' id="active"';
      }
      $output .= ">". l('<span>'.$link['title'].'</span>', $link['href'],
      $link['attributes'], $link['query'], $link['fragment'],$absolute, $html = TRUE) ."</li>\n";
    }
  }
  $output .= '</ul>';

  return $output;
}




/**
* überschreibt theme_menu_item() aus includes/menu.inc
*
* fügt zusätzlich eine class 'active' für alle aktiven menupunkte zum <li>-element
*/
function phptemplate_menu_item($mid, $children = '', $leaf = TRUE) {

  $item = menu_get_item($mid); // hole den jeweiligen menupunkt


  if ((drupal_get_normal_path($item['path']) == $_GET['q']) // pfad aktiv?
  || (drupal_is_front_page() && $item['path'] == '<front>') // oder sind wir auf der startseite?
  || menu_in_active_trail($mid)) { // oder sind wir irgendwo im aktiven pfad, also in einem übergeordneten element des gerade angewählten?
    $active = ' class="active"';
  } else {
    $active = '';
  }
  return '<li' . $active . '>' . menu_item_link($mid) . $children ."</li>\n";
}

‹ referenz für template erstellung Tabellen im Content-Bereich immer 100%? ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Deine Seite zeigt ja das es

Eingetragen von pebosi (2645)
am 15.06.2007 - 12:00 Uhr

Deine Seite zeigt ja das es bei manchen geht und bei anderen nicht, versuche einfach zu ermitteln wo der Unterschied der beiden ist, vielleicht fehlt da einen Zuordnung von Kategorien, etc.

gruß pebosi

  • Anmelden oder Registrieren um Kommentare zu schreiben

Glaub mir, ich habe echt

Eingetragen von Pfoto (25)
am 15.06.2007 - 13:06 Uhr

Glaub mir, ich habe echt alles untersucht und verglichen,
was denn an den wenigen funktionierenden Menüitems so besonders ist,
was bei den anderen fehlt -- ich finde wirklich nichts!

Ich habe nun schon MenuTrails ausprobiert (es erscheint nach
dem Editieren und abschicken von Nodes dann immer eine weiße Seite),
SlicedMenü und TrimMenü. Die letztgenannten erfüllen durchaus
ihren Zweck, aber mein Problem besteht immer noch.

Auch verschiedene Code-Stücke aus dem deutschen und original
Drupal-Forum habe ich eingesetzt -- leider vergeblich!

Hat jemand eine solche 3-stufige Navigation mit Aktivierung
aller beteiligten Menüpunkte schon realisieren können?

Schade, dass das in Drupal so komplex ist. :-((

Gruß
Pfoto

  • Anmelden oder Registrieren um Kommentare zu schreiben

Habs endlich hinbekommen

Eingetragen von Pfoto (25)
am 15.06.2007 - 23:14 Uhr

Meine Lösung ist bestimmt nicht astrein, aber für die die
es interessiert, hier mein vorgehen:

1.) Als Primary-Menü die erste, zweite und dritte Ebene erstellen
2.) Modul Trim-Menü installieren und damit die zweite Ebene trennen
Durch das Trim-Menü-Modul werden die zweiten Ebenen
automatisch zu Blöcken, die zur rechten Zeit (bei Klick
auf die erste Ebene) angezeigt werden.
3.) Für die dritte Ebene nun entsprechend weitere neue Menüs anlegen
(dies ist leider der große Nachteil, da man diese Ebene ja schon
im Primary-Menü anlegen musste...)
4.) Nun den folgenden Code in die Datei template.php einfügen:

function phptemplate_menu_links($links) {
  if (!count($links)) {
    return '';
  }
  $level_tmp = explode('-', key($links));
  $level = $level_tmp[0];
  $output = "<ul class=\"links-$level\">\n";
  foreach ($links as $index => $link) {
    $output .= '<li';
      if (stristr($index, 'active')) {
       $output .= ' id="active"';
      }
      $output .= ">". l('<span>'.$link['title'].'</span>', $link['href'],
      $link['attributes'], $link['query'], $link['fragment'],$absolute, $html = TRUE) ."</li>\n";
  }
  $output .= '</ul>';

  return $output;
}





/**
* überschreibt theme_menu_item() aus includes/menu.inc
* schaut, ob ein MenüItem im Pfad-Alias des gerade gewählten MenüItems ist
* fügt dann zusätzlich eine class 'active' für alle aktiven menupunkte zum <li>-element
*/
function phptemplate_menu_item($mid, $children = '', $leaf = TRUE) {
  $item = menu_get_item($mid); // hole den jeweiligen menupunkt

  if (stristr(drupal_get_path_alias($_GET['q']), drupal_get_path_alias($item['path']))) {
    $active = ' class="active"';
  } else {
    $active = '';
  }

  return '<li' . $active . '>' . menu_item_link($mid) . $children ."</li>\n";
}

5.) Damit die letzte Funktion ihre Wirkung tut, muss in den Pfadangaben
immer auch der Pfad des Eltern-Menüitems hinzugefügt werden, als z.B.
"Produkte/Kleidung/Pullover"

Wenn nun der Eltern-Menüpunkt "Produkte/Kleidung/" feststellt, dass
dieser String auch in dem des gerade aktivierten Kind-Elementes vorkommt,
wird das "active" geschrieben.

Vielleicht finde ich ja mit der Zeit elegantere Lösungen,
aber vorerst fasse ich Drupal nicht mehr an ;-)

Gruß
Pfoto

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • 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
  • Drupal 11 neu aufsetzen und Bereiche aus 10 importieren
Weiter

Neue Kommentare

  • Verwende doch das Tag dafür,
    vor 6 Tagen 10 Stunden
  • Guckst du hier: step by step
    vor 6 Tagen 46 Minuten
  • Guckst du hier: step by step
    vor 6 Tagen 47 Minuten
  • Ich habe ja keine Angst vor
    vor 2 Wochen 1 Tag
  • Ist grundsätzlichmachbar – aber nichts für „einfach mal schnell“
    vor 2 Wochen 3 Tagen
  • Vielen Dank erst einmal, aber
    vor 2 Wochen 5 Tagen
  • Du hast die "Trusted host
    vor 2 Wochen 5 Tagen
  • Bitte genauer den aktuellen Lösungs-Ansatz beschreiben
    vor 4 Wochen 4 Tagen
  • Git und rsync sind die wichtigsten Werkzeuge
    vor 5 Wochen 1 Tag
  • Arrrrg. Nix Tabelle :-D /*
    vor 9 Wochen 3 Tagen

Statistik

Beiträge im Forum: 250284
Registrierte User: 20499

Neue User:

  • Inga GuAph
  • Robertolix
  • DavidBit

» Alle User anzeigen

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