Theming von Haupt-Menü, Block-Menü und Block-Menü zweiter Ebene
Eingetragen von t2k (258)
am 25.03.2014 - 12:34 Uhr in
am 25.03.2014 - 12:34 Uhr in
Hallo!
Wenn ich das richtig sehe, muss ich für das Theming eines Menüs ja die template.php bemühen.
Das klappt auch soweit, wenn ich das für alle vorhandenen Menüs mache.
Hier meine verwendeter Code:
<?php
function meinthemename_menu_link(array $variables) {
unset($variables['element']['#attributes']['class']);
$element = $variables['element'];
if($variables['element']['#attributes'])
$sub_menu = '';
if ($element['#below']) {
$sub_menu = drupal_render($element['#below']);
}
$output = l($element['#title'], $element['#href'], $element['#localized_options']);
return '<li class="meineklasse">' . $output . "</li>\n";
} ?>
Wie muss nun aber der Code aussehen, wenn ich das Hauptmenü, das daraus bestehende Block-Menü erster Ebene und Block-Menü zweiter Ebene unterscheidlich haben möchte.
Hier brauche ich mehrere umgebende DIVs, und verschiendene Klassen in den UL und LI.
Könnt ihr mir sagen wie der Hook (oder was auch immer) aussehen muss?
Oder gibt es da eine andere Möglichkeit auf Modul-Eben?
Vielen Dank und Grüße!
- Anmelden oder Registrieren um Kommentare zu schreiben
Hi, du könnst diese Module
am 25.03.2014 - 16:38 Uhr
Hi, du könnst diese Module verwenden:
https://drupal.org/project/menu_block
https://drupal.org/project/menu_block_split
Damit lassen sich recht übersichtlich Menüs verwalten duplizieren, aufteilen, etc.
Lg, Marc
Ah, vergaß ich vielleicht zu
am 25.03.2014 - 17:24 Uhr
Ah, vergaß ich vielleicht zu sagen, ich verwende bereits das Menu-Block-Modul.
Mir gehts ja darum, wie ich den output dieses Moduls (also DIVs, UL, und LIs) beeinflussen kann.
Denn in den Modulen lässt sich das ja scheinbar nicht einstellen.
Danke für deine Antwort!
Eigentlich solltest Du doch
am 25.03.2014 - 19:56 Uhr
Eigentlich solltest Du doch genügend Struktur haben. Jeder Block in Drupal hat eine eindeutige ID und von da ausgehend lassen sich immer eindeutige Selektoren im CSS bauen. Wo liegt also Dein Problem?
Ja, schon richtig. Leider
am 25.03.2014 - 20:11 Uhr
Ja, schon richtig.
Leider brauche sowas wie:
<ul>
<li class="col-xs-4 col-sm-1 col-md-1 col-lg-1">
<a class="aktiv" href="/start">Start</a>
</li>
....
Gibts da sonst noch einen Weg?
Vielen Dank und beste Grüße!
Es ist nicht ganz genau der
am 26.03.2014 - 12:01 Uhr
Es ist nicht ganz genau der Code den du brauchst, aber ich hatte nal was ähnliches gebraucht für einen Kunden.
Wenn du es etwas anpasst, müsste es damit klappen:
function webtransformer_menu_link($variables) {
$element = $variables['element'];
static $item_id = 0;
if(!empty($element['#original_link']['menu_name']) && $element['#original_link']['menu_name'] == 'main-menu'){
if($element['#original_link']['has_children'] == 1){
/* Add the ID */
$element['#attributes']['id'][] = 'menu_'.str_replace(' ', '_',strtolower($element['#title']));
}
/* add class parent and remove leaf */
$classes_count = count($element['#attributes']['class']);
for($i=0;$i<$classes_count;++$i){
if($element['#attributes']['class'][$i] == 'expanded'){
$element['#attributes']['class'][$i] = 'parent';
}
if($element['#original_link']['plid'] == 0){
if($element['#attributes']['class'][$i] == 'leaf'){
unset($element['#attributes']['class'][$i]);
}
}
else{
if($element['#attributes']['class'][$i] == 'leaf'){
$element['#attributes']['class'][$i] = 'sub_menu';
}
}
}
}
$sub_menu = $element['#below'] ? drupal_render($element['#below']) : '';
$output = l($element['#title'], $element['#href'], $element['#localized_options']);
return '<li' . drupal_attributes($element['#attributes']) . '>' . $output . '<div class="footer_dropup drop4columns"><div class="col_4">
' . $sub_menu . '</div></div></li>'."\n";
}
function webtransformer_menu_tree__main_menu(&$variables) {
return '<ul id="footer" class="footer_fixedwidth">' . $variables['tree'] . '</ul>';
}
Vielen Dank Goekmen!!! Das
am 26.03.2014 - 14:44 Uhr
Vielen Dank Goekmen!!!
Das ist "etwas" komplex, aber ich werde es genauer unter die Lupe nehmen! :-)
Vielen Dank und Grüße!