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 - 22: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 - 11: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 - 12: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 - 22: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

  • Планируете современное лечение в стоматологии без неприятных ощущений в Северной столице?
  • 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?
Weiter

Neue Kommentare

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

Statistik

Beiträge im Forum: 250234
Registrierte User: 20453

Neue User:

  • Spravkicic
  • ByteScrapers
  • Mroppoofpaync

» 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 1 Benutzer und 27 Gäste online.

Benutzer online

  • Spravkicic

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