Menü
am 26.05.2008 - 16:09 Uhr in
Hallo zusammen,
ich baue gerade ein Horizontales Tabmenü. mit zwei Ebenen.
Die Erste Ebene hat Tabs mit Hintergrundbildern. Entsprechend der Auswahl erscheint dann darunter das jeweilige Submenu in der Gleichen Farbe wie der Hauptpunkt.
Nun ist die Frage, wird es mir gelingen dies so zu bauen. Mein Ansatz wäre die theme_menu_tree() zu überschreiben!
Das Problem liegt ja nun darin, dass ich entsprechend der Auswahl auch in den <li> die classes ändern muss.
Was meint Ihr bekomme ich das über die theme_menu_tree() hin oder habt Ihr einen besseren Ansatz für mich?
gruss
drupalino
- Anmelden oder Registrieren um Kommentare zu schreiben

keiner ne
am 26.05.2008 - 18:23 Uhr
keiner ne idee?
-------------------
gruss
drupalino
Hallo drupalino, evtl hilft
am 26.05.2008 - 21:46 Uhr
Hallo drupalino,
evtl hilft dir folgendes?
http://www.thanhsiang.org/faqing/node/88
Grüße,
Robin
Leider nicht. Zum ein soll
am 26.05.2008 - 21:51 Uhr
Leider nicht.
Zum ein soll es kein dropdown in dem Sinne sein, denn die submenüpunkte liegen auch horizontal nebeneinander. Ich bin mir sehr sicher, dass ich es nur übers Coden hinbekomme, aber welche funktion?
-------------------
gruss
drupalino
<ul> <li
am 26.05.2008 - 22:00 Uhr
<ul>
<li id="mainnavi_01"><a href=""><img src="images/spacer.gif" width="80" height="23" alt="HOME" border="0"/></a></li>
<li id="mainnavi_02"><a href=""><img src="images/spacer.gif" width="96" height="23" alt="" border="0"/></a></li>
<li id="mainnavi_03"><a href=""><img src="images/spacer.gif" width="85" height="23" alt="" border="0"/></a></li>
<li id="mainnavi_04"><a href=""><img src="images/spacer.gif" width="76" height="23" alt="" border="0"/></a></li>
<li id="mainnavi_05"><a href=""><img src="images/spacer.gif" width="89" height="23" alt="E" border="0"/></a></li>
<li id="mainnavi_06"><a href=""><img src="images/spacer.gif" width="82" height="23" alt="" border="0"/></a></li>
<li id="mainnavi_07"><a href=""><img src="images/spacer.gif" width="74" height="23" alt="" border="0"/></a></li>
<li id="mainnavi_08"><a href=""><img src="images/spacer.gif" width="146" height="23" alt="" border="0"/></a></li>
</ul>
das so die erste ebene und dazwischen dann entsprechend
<ul><li class=""><a href="">Bestbewertete</a></li>
<li class=""><a href="">Neueste </a></li>
<li class=""><a href="">Meistgesehene </a></li>
<li class=""><a href="">Meistkommentierte</a></li>
</ul>
die natürlich dann immer unterschiedliche classen haben
-------------------
gruss
drupalino
Keiner ne
am 27.05.2008 - 09:02 Uhr
Keiner ne Idee?
-------------------
gruss
drupalino
Meinst du so wie hier:
am 27.05.2008 - 09:12 Uhr
Meinst du so wie hier: http://www.forward-media.info/? Das ist ein Drupal Theme (http://drupal.org/project/fourseasons)
Wenn das so ist könntest du dir ja das Theme runterladen und nachsehen wie das dort gelöst wurde.
Leider wird das auf eine Art
am 27.05.2008 - 16:16 Uhr
Leider wird das auf eine Art und Weise gemacht, die für mich nicht zu verwenden ist.
Ich verzweifel hier noch daran!
-------------------
gruss
drupalino
Ich müsste irgendwie auf
am 27.05.2008 - 17:19 Uhr
Ich müsste irgendwie auf die id in
<li id="mainnavi_01"><a href="">zugreifen und dann in Abhängigkeit entsprechend die Subnavi ansprechen!-------------------
gruss
drupalino
Hier ist ein Menü, so soll
am 27.05.2008 - 17:39 Uhr
Hier ist ein Menü, so soll es aussehen (so ähnlich, aber die Änderungen kann man dann über css machen) Sprich anstatt Styles sind da bilder drin, die aber alle unterschiedlich sind
http://www.kalsey.com/tools/csstabs/2
Wie kann ich das nun Drupal beibringen??????
-------------------
gruss
drupalino
Hat denn noch niemand so ein
am 27.05.2008 - 19:23 Uhr
Hat denn noch niemand so ein ähnliches Problem mal gehabt???
-------------------
gruss
drupalino
ach so moment, also nicht
am 27.05.2008 - 19:32 Uhr
ach so moment, also nicht nur hintergrundbilder sondern komplett grafik statt text?
Also es sind zumindest
am 27.05.2008 - 19:48 Uhr
Also es sind zumindest Background-Images. Ob da nun dann auch die Linkbeschreibung drüber liegen soll oder das direkt in der Grafik ist, denke ich ist ertmal nicht so wichtig.
Problem ist ja, dass ich zu jedem Hauptpunkt ein eigenes submenü in der Art, dass dann eine andere class der css angesprochen werden muss. Da das Submenue der Farbe des Oberpunktes Folgen soll.
Wie oben beschrieben habe ich also eine liste und zu jedem Listeneintrag eine weitere "unterliste".
Als reines CSS habe ich das ja schon gefunden (jedenfalls die richtige Richtung (Link ist in einem Post oben))
Nun muss ich ja Drupal, wenn es dieses Menü renderd oder wie man das auch immer nennt, sozusagen die id in dem li mitgeben, meinetwegen um eins nach oben zu zählen und eben diesen Index auch an das Submenü weitergibt. Dann könnte ich ja alles weitere über die CSS steuern.
Problem nur, ich finde keinen Ansatz, bzw. mir sind die api funktionen nicht ganz verständlich.
Versteht man das was ich versuche zu mache oder drücke ich mich vielleicht schlecht aus???
-------------------
gruss
drupalino
eine ähnliche frage gabs
am 27.05.2008 - 19:49 Uhr
eine ähnliche frage gabs mal hier: http://www.drupalcenter.de/node/7621
dort konnte es wohl mit css gelöst werden, vielleicht kommt das für dich auch in frage? denn eigtl hat ja jeder menüpunkt eine eigene id, also nach dem schema "menu-1-3-2".
ansonsten wäre es für die verständlichkeit evtl gut, wenn du mal eine art skizze mit photoshop oder so machst, dann kann man sich das besser vorstellen...
ibm hat mal ein ausführliches fiktives projekt mit drupal beschrieben, bei dem u.a. pro seitenbereich verschiedene farben definiert waren (http://www.ibm.com/developerworks/ibm/library/i-osource8/#N1038B - vielleicht ist es ungefähr sowas, was du brauchst?). die gesamtbeschreibung (http://www.ibm.com/developerworks/ibm/osource/implement.html) des projekts ist überhaupt sehr lehrreich und ausführlich.
genau
am 27.05.2008 - 19:59 Uhr
genau
Du hast in Deinem Post in dem anderen Thread http://www.drupalcenter.de/node/7621#comment-27947
eigentlich genau beschrieben
<ul><li><a href="/eins" id="menu-1-1-1" title="Mein erster Menüpunkt">Mein erster Menüpunkt</a></li>
<li><a href="/zwei" id="menu-1-1-2" title="Mein zweiter Menüpunkt">Mein erster Menüpunkt</a></li>
usw.
</ul>
Und genau hier liegts vie bekomme ich es hin, dass eben id="menu-1-1-1" unterschiedlich ausgegeben werden???
ich blicke das hier noch nicht so ganz
<?php
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 .= ' class="active"';
}
if (strpos($link['title'], '<img') === 0) {
$output .= ">". l($link['title'], $link['href'], $link['attributes'], $link['query'], $link['fragment'], FALSE, TRUE) ."</li>\n";
}
else {
$output .= ">". l($link['title'], $link['href'], $link['attributes'], $link['query'], $link['fragment']) ."</li>\n";
}
}
$output .= '</ul>';
return $output;
}
?>
-------------------
gruss
drupalino
Die Frage ist dann auch, wie
am 27.05.2008 - 20:19 Uhr
Die Frage ist dann auch, wie hält Drupal diese Links inklusive Sublinks, dazu finde ich leider nichts aussagekräftiges. so dass man die irgendie iteriren kann in solch einer Funktion?!?!?!
-------------------
gruss
drupalino
Sublinks
am 27.05.2008 - 21:44 Uhr
Und sonst könntest du vielleicht das wie hier beschrieben machen
Erstelle doch die sublinks als seperates Menü. Das kannst du dann anhand des Menünamens und des Blocks unterschiedlich mit CSS bearbeiten also irgendwie #block-menu-secondary-links ul usw.
Und guckmal ob du mit
function theme_menu_item_link($item, $link_item) {
return l($item['title'], $link_item['path'], !empty($item['description']) ? array('title' => $item['description']) : array(), isset($item['query']) ? $item['query'] : NULL);
}
vielleicht besser zurecht kommst. Mach mal print_r auf die Variablen. In Drupal 6 enthalten die eine Menge nützlicher Informationen. Mehr kann ich dazu nicht orakeln und ich hoffe ich habe dein Problem richtig verstanden ;-)
Naja, so das wahre ist das
am 27.05.2008 - 21:45 Uhr
Naja, so das wahre ist das ja nicht. Dran gedacht hatte ich schon, aber mal ehrlich, nicht sehr elegant und auch nicht so wirklich leiht zu pflegen dann.
Das Array mal auszuspucken werde ich mal ausprobieren!
-------------------
gruss
drupalino
Danke trotzdem :-) Werd mir
am 27.05.2008 - 21:49 Uhr
Danke trotzdem :-)
Werd mir das morgen nochmal in aller Ruhe zur Brust nehmen. Hoffentlich finde ich eine Lösung!!!
-------------------
gruss
drupalino
Du kannst das natürlich
am 27.05.2008 - 21:55 Uhr
Du kannst das natürlich auch programmieren.
Ich hab hier nur ein Drupal 6 aber die Datenstruktur ist recht simpel:
SELECT *
FROM `menu_links`
WHERE `menu_name` LIKE 'meinmenu' AND plid = 0
Das wären dann alle ebene 1 links in einer ganz ganz groben Abfrage.
dann halt aus der selben Tabelle alle wo plid = $node->nid wenn ich mich recht entsinne und du hast die ebene 2. Damit kannst du dann anstellen was du willst und das sind nur zwei abfragen, ein wenig loop und gut ;)
Wo kann ich ein
am 27.05.2008 - 23:05 Uhr
Das ist der Weg.....
function phptemplate_menu_item($mid, $children = '', $leaf = TRUE) {$link = menu_item_link($mid);
$css_id = strtolower(str_replace(' ', '_', strip_tags($link)));
return '<li id="' . $css_id . '" class="' . ($leaf ? 'leaf' : ($children ? 'expanded' : 'collapsed')) .'">'. $link . $children ."</li>\n";
}
trotzdem noch die Frage -->
Wo kann ich ein
print_r($links);hinsetzen, damit ich das Array rausbekomme?
-------------------
gruss
drupalino
Öh naja, da hast du keine
am 27.05.2008 - 23:26 Uhr
Öh naja, da hast du keine variable $links wenn ich das richtig sehe. Wie schon gesagt, ich nutze drupal 6 und die Funktionen haben sich anscheinend verändert.
Ich denke ich meine diese Funktion
http://api.drupal.org/api/function/theme_menu_links/5