Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Allgemeines zu Drupal ›

beim nice-menu einen span-Tag um jeden Menüpunkt hinzufügen

Eingetragen von dknopf (80)
am 28.11.2011 - 01:47 Uhr in
  • Allgemeines zu Drupal
  • Drupal 7.x

Hallo ihr Lieben,
der Betreff beschreibt es glaube ich schon ganz gut.

ich habe ein nice-Menu und ich möchte um jeden Eintrag dort einen zusätzlichen span-Tag einfügen, es soll also nicht mehr
.... <a href.....>Link 1</a>

heißen
sondern:
....<a href....><span>Link 1</span></a>

der span-Tag könnte auch außerhalb vom a-Tag liegen, das würde für mich keinen Unterschied machen.

Ich weiß einfach nicht, wie man das hinbekommen kann, aber Drupal ist doch sooooo flexibel, da muß es doch eine Lösung geben :-)

lieben Gruß
Daniela

‹ Login Konzeptfrage [gelöst] Node.tpl.php Nur den Bodytext ausgeben, getrennt von restlichen CCK-Feldern. Wie? ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo Daniela, Ich weiß zwar

Eingetragen von Schiene3 (80)
am 28.11.2011 - 08:40 Uhr

Hallo Daniela,

Ich weiß zwar nicht wie das beim Nicemenu ist, aber ich nutze das Superfish-Modul und da kannst Du in den generierten Superfish-Blöcken einfach Klassen usw. einfügen. Wenn Du also noch nicht festgelegt bist, kannst Du es ja mal mit dem Superfish-Modul probieren;-)

Besten Gruß

Chris

  • Anmelden oder Registrieren um Kommentare zu schreiben

das Superfish Menü ist mir

Eingetragen von dknopf (80)
am 28.11.2011 - 11:48 Uhr

das Superfish Menü ist mir bekannt.
Da es wesentlich umfangreicher ist und auch viel schwerer zu handhaben, würde ich es gerne mit dem Nice-Menü machen.
Das ist um vieles einfacher zu händeln.

Konkret geht es darum dass es in einem Li-Tag die Klassen menuparent und active-trail gibt, wohlgemerkt in einem Li-Tag und ich würde gerne zwei unterschiedliche Hintergrundbilder vergeben.
Das geht natürlich dann nicht. Dazu bräuchte man um den Link noch einen weiteren Span-Tag.
Aber da muß es doch eine Möglichkeit geben, ich würde wirklich ungerne zu Superfish wechseln :-(

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo Daniela,ich habe mich,

Eingetragen von torfnase (1525)
am 28.11.2011 - 15:33 Uhr

Hallo Daniela,
ich habe mich, wie du ja schon bei den Videos gesehen bzw. gehört hast, ein wenig mit den beiden Menüs (nice-Menu und Superfishmenu) beschäftigt und in der Tat ist das Superfish-Menu sehr viel umfangreicher und deshalb auch besser einzustellen.

Es gibt aber auch eine "Holzhammer" Methode, wie du beim nice-Menu einen Span um die Links setzen kannst. Das geht aber meines Wissens nicht ohne die themename_ nice_menus_build Funktion zu überschreiben.
Du könntest also so vorgehen:

function themename_nice_menus_build($variables) {
  $menu = $variables['menu'];
  $depth = $variables['depth'];
  $trail = $variables['trail'];
  $output = '';
  // Prepare to count the links so we can mark first, last, odd and even.
  $index = 0;
  $count = 0;
  foreach ($menu as $menu_count) {
    if ($menu_count['link']['hidden'] == 0) {
      $count++;
    }
  }
  // Get to building the menu.
  foreach ($menu as $menu_item) {
    $mlid = $menu_item['link']['mlid'];
    // Check to see if it is a visible menu item.
    if (!isset($menu_item['link']['hidden']) || $menu_item['link']['hidden'] == 0) {
      // Check our count and build first, last, odd/even classes.
      $index++;
      $first_class = $index == 1 ? ' first ' : '';
      $oddeven_class = $index % 2 == 0 ? ' even ' : ' odd ';
      $last_class = $index == $count ? ' last ' : '';
      // Build class name based on menu path
      // e.g. to give each menu item individual style.
      // Strip funny symbols.
      $clean_path = str_replace(array('http://', 'www', '<', '>', '&', '=', '?', ':', '.'), '', $menu_item['link']['href']);
      // Convert slashes to dashes.
      $clean_path = str_replace('/', '-', $clean_path);
      $class = 'menu-path-' . $clean_path;
      if ($trail && in_array($mlid, $trail)) {
        $class .= ' active-trail';
      }
      // If it has children build a nice little tree under it.
      if ((!empty($menu_item['link']['has_children'])) && (!empty($menu_item['below'])) && $depth != 0) {
        // Keep passing children into the function 'til we get them all.
        $children = theme('nice_menus_build', array('menu' => $menu_item['below'], 'depth' => $depth, 'trail' => $trail));
        // Set the class to parent only of children are displayed.
        $parent_class = ($children && ($menu_item['link']['depth'] <= $depth || $depth == -1)) ? 'menuparent ' : '';

         $element = array(
          '#below' => '',
          '#title' => $menu_item['link']['link_title'],
          '#href' =>  $menu_item['link']['href'],
          '#localized_options' => $menu_item['link']['localized_options'],
          '#attributes' => array(),
        );
        $variables['element'] = $element;

        $output .= '<li class="menu-' . $mlid . ' ' . $parent_class . $class . $first_class . $oddeven_class . $last_class . '"><span>'. theme('nice_menus_menu_item_link', $variables);
        // Check our depth parameters.
        if ($menu_item['link']['depth'] <= $depth || $depth == -1) {
          // Build the child UL only if children are displayed for the user.
          if ($children) {
            $output .= '</span><ul>';
            $output .= $children;
            $output .= "</ul>\n";
          }
        }
        $output .= "</li>\n";
      }
      else {

        $element = array(
          '#below' => '',
          '#title' => $menu_item['link']['link_title'],
          '#href' =>  $menu_item['link']['href'],
          '#localized_options' => $menu_item['link']['localized_options'],
          '#attributes' => array(),
        );
        $variables['element'] = $element;
        $output .= '<li class="menu-' . $mlid . ' ' . $class . $first_class . $oddeven_class . $last_class . '"><span>' . theme('nice_menus_menu_item_link', $variables) . "</span></li>\n";
      }
    }
  }
  return $output;
}

Veränderungen habe ich an 4 Stelle vorgenommen:

        $output .= '<li class="menu-' . $mlid . ' ' . $parent_class . $class . $first_class . $oddeven_class . $last_class . '"><span>'. theme('nice_menus_menu_item_link', $variables);
        // Check our depth parameters.
        if ($menu_item['link']['depth'] <= $depth || $depth == -1) {
          // Build the child UL only if children are displayed for the user.
          if ($children) {
            $output .= '</span><ul>';

Dort habe ich einen Span-Tag und auch einen span-End-Tag ergänze (ich denke, dass findest du schon)
und an der Stelle (etwas tiefer)

       
$output .= '<li class="menu-' . $mlid . ' ' . $class . $first_class . $oddeven_class . $last_class . '"><span>' . theme('nice_menus_menu_item_link', $variables) . "</span></li>\n";

Dort habe ich auch einen Span-Tagund einen span-End-Tag ergänzt (das ist für Unterpunkte).

Wie gesagt, dass ist die Holzhammer-Methode und ich würde mir wünschen, es hat noch jemand was besseres auf Lager.
Ich weiß aber auch nicht, wie man die Variablen so abänder kann, dass es funktioniert, aber so eine Möglichkeit wäre sicherlich besser.

vielleicht hat ja noch jemand eine bessere Lösung :-)

viel Grüße
Berthold lausch

  • Anmelden oder Registrieren um Kommentare zu schreiben

Du hast doch schon 2

Eingetragen von wla (9461)
am 28.11.2011 - 15:31 Uhr

Du hast doch schon 2 Elemente, das li vom Menü und dann den a-Tag innerhalb. Das ist eigentlich ausreichend.

Beste Grüße
Werner

  • Anmelden oder Registrieren um Kommentare zu schreiben

nah da haben wir ja fast

Eingetragen von torfnase (1525)
am 28.11.2011 - 15:47 Uhr

nah da haben wir ja fast gleichzeitig was dazu geschrieben....

@Werner
die Klassen menuparent und activ-trail liegen beide in dem Li-Tag beim Nice-Menu, deshalb ist es doch nicht möglich, dort z.B. zwei unterschiedliche Hintergründe zu vergeben.
der A-Tag hat zwar auch noch eine Klasse .active aber das reicht natürlich nicht für einen Pfad, wenn er über mehr als eine Menüebene geht, aus.
Wenn ich da etwas übersehen habe, wäre ich auch um eine bessere Lösung, als ich sie oben angeboten habe, dankbar.

Die Problematik ist ja auch ganz grundsätzlich interessant....

btw: das Superfish-Menü hat dafür extra so eine kleine Unterklasse: (sf-sub-indicator). Diese Lösung ist natürlich besser, aber das Menü ist eben auch wesentlich aufwendiger.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Dann muß man eben Ketten

Eingetragen von wla (9461)
am 28.11.2011 - 15:53 Uhr

Dann muß man eben Ketten bauen
#menuid ul li.active {....}
#menuid ul li.active a {....}
oder auch
#menuid ul li.active > a {....}
Wo ist das Problem?

Beste Grüße
Werner

  • Anmelden oder Registrieren um Kommentare zu schreiben

in der Tat, da ist was

Eingetragen von torfnase (1525)
am 28.11.2011 - 16:50 Uhr

in der Tat, da ist was dran...
so könnte es auch gehen.
Das eine Bild in der Klasse
Li.menuparent
und das andere in der Klasse
Li.active_trail > A

Aber mich würde trotzdem interessieren, wie man beim Nice-Menu bei einem Menüeintrag noch einen span-Tag ergänzen kann (also auf andere möglicherweise einfachere Art und Weise, wie ich es oben beschrieben habe). Das ist wie schon erwähnt grundsätzlich eine interessante Fragestellung.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Du könntest in der

Eingetragen von wla (9461)
am 28.11.2011 - 17:39 Uhr

Du könntest in der template.php im Theme die Funktion [api:theme_menu_item_link] überschreiben, das gilt aber dann für alle Menüs. Wenn das zu viel ist, mußt Du theme_nice_menu_build aus dem Nice_menu-Modul überschreiben und dort eine andere (selbstgestrickte) Funktion für theme('menu_item_link', $menu_item['link']) verwenden.

Beste Grüße
Werner

  • Anmelden oder Registrieren um Kommentare zu schreiben

ja genau, das ist ja mein

Eingetragen von torfnase (1525)
am 28.11.2011 - 18:39 Uhr

ja genau, das ist ja mein Vorschlag von oben, die themename_nice_menu_build in der template.php überschreiben.
(Hatte ich mich da so undeutlich ausgedrückt ?)
ich dachte, es gäbe noch ne bessere Alternative, als die Art und Weise, wie ich es überschrieben habe.

  • Anmelden oder Registrieren um Kommentare zu schreiben

vielen lieben Dank an Werner

Eingetragen von dknopf (80)
am 29.11.2011 - 00:27 Uhr

vielen lieben Dank an Werner und Berthold.

Ich habe mir beide Lösungsansätze angeschaut und beide funktionieren.
Ich hatte gar nicht daran gedacht, es mit so einer "Kette" wie Werner es formuliert hat über CSS zu versuchen. Aber der Ansatz paßt schon mal.
Deshalb hatte ich auch nach einem neuen Span-Tag bei den Menüelementen gefragt.

Die Lösung dafür, also das Überschreiben der themename_nice_menu_build in der template.php von Berthold ist in meinen Augen auch billiant. Dieser Lösungsweg hat natürlich den Vorteil, dass man weitere span-Tags oder auch css-Klassen dort ergänzen kann. Das hilft einem dann vielleicht weiter, wenn man aus anderen Gründen mit den vorgegebenen Klassen und Tags nicht hinkommt.

Es ist schön, dass es hier soviel Sachverstand im Forum gibt.

nochmals vielen Dank

Daniela

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • [Gelöst] Menü wie hier samsung.com/de/ wie, mit Drupal?
  • Wie erlaubt man neuen Benutzern auf die Resetseite zugreifen zu dürfen.
  • für drupal11 ein Slider Modul
  • [gelöst] W3CSS Paragraphs Views
  • Drupal 11 neu aufsetzen und Bereiche aus 10 importieren
  • [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

  • Казино с минимальным депозитом
    vor 4 Stunden 13 Minuten
  • Казино с минимальным депозитом
    vor 4 Stunden 14 Minuten
  • Казино с минимальным депозитом
    vor 4 Stunden 15 Minuten
  • Казино с минимальным депозитом
    vor 4 Stunden 17 Minuten
  • Казино с минимальным депозитом
    vor 4 Stunden 18 Minuten
  • melde mich mal wieder, da ich
    vor 2 Wochen 4 Tagen
  • Hey danke
    vor 2 Wochen 5 Tagen
  • Update: jetzt gibt's ein
    vor 2 Wochen 6 Tagen
  • Hallo, im Prinzip habe ich
    vor 3 Wochen 3 Tagen
  • Da scheint die Terminologie
    vor 3 Wochen 3 Tagen

Statistik

Beiträge im Forum: 250238
Registrierte User: 20456

Neue User:

  • Znogsnernoimb
  • 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 0 User und 21 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