target="_blank" in einem Menüpunkt, wie?
am 13.04.2011 - 09:45 Uhr in
Hallo zusammen,
hab jetzt schon ne Weile gesucht und Bücher durchforstet, aber nicht zum o.g. Problem gefunden.
Ich habe ein neues Menü für die Sidebar erstellt, in dem man z.B. einen Link zur Facebook Fanpage findet. Per CSS hab ich dem Menüpunkt ein Hintergrundbild mit dem Facebook Logo gegeben. Im Menüpunkt selbst habe ich keine Möglichkeit anzugeben, ob der Klick einen neuen Tab im Browser oder ein neues Fenster öffnen soll.
Wie und wo müsste man diese Funktionalität einbauen? Eine alternative wäre vermutlich das Modul "Menu Attributes", aber geht es auch ohne Modul?
Gruß und danke.
- Anmelden oder Registrieren um Kommentare zu schreiben

theme_menu_item_link
am 13.04.2011 - 10:04 Uhr
Hallo.
Ohne Modul kann man das über die Theme-Ebene steuern. Speziell über die Funktion [api:theme_menu_item_link:6].
Stefan
Um dem "custom menu" eine
am 13.04.2011 - 10:23 Uhr
Um dem "custom menu" eine eindeutige Klasse zu geben habe ich folgende Funktion in meinen template.php Datei geschrieben. (Diese funktioniert auch, d.h. sie schreibt eine eindeutige Class=menu-XYZ zum jeweiligen Link.
<?php
/**
* Add unique class (mlid) to all menu items.
*/
function templateXXX_menu_link(array $variables) {
$element = $variables['element'];
$sub_menu = '';
$element['#attributes']['class'][] = 'menu-' . $element['#original_link']['mlid'];
if ($element['#below']) {
$sub_menu = drupal_render($element['#below']);
}
$output = l($element['#title'], $element['#href'], $element['#localized_options']);
return '<li' . drupal_attributes($element['#attributes']) . '>' . $output . $sub_menu . "</li>\n";
}
?>
gefunden auf:
http://api.drupal.org/api/drupal/includes--menu.inc/function/theme_menu_...
Wie bekomme ich jetzt noch das target='_blank' hinzu?
Einen Ansatz für externe Links wäre zu schauen, ob im href die ersten 4 Zeichen 'http' sind, dann externen Link daraus machen.
Danke für eure Hilfe.
target
am 13.04.2011 - 10:40 Uhr
Einen Ansatz für externe Links wäre zu schauen, ob im href die ersten 4 Zeichen 'http' sind, dann externen Link daraus machen.
Genau so. Nur, dass Du dann
$element['#attributes']['target']setzen musst.Allerdings finde ich persönlich als Benutzer von Webseiten es absolut nervend, wenn Links in neuen Tabs/Fenster geöffnet werden. Das kann und möchte ich selbst entscheiden. Und außerdem ist der HTML-Quelltext dann nicht valide :)
Hallo, vielen Dank für die
am 13.04.2011 - 16:57 Uhr
Hallo,
vielen Dank für die Hilfe,
habe jetzt aber doch das Modul menu attributes genommen. Dieses musste aber auch noch angepasst werden.
Musste den modul Code wie folgt verändern:
function menu_attributes_get_menu_attribute_info() {
$attributes = module_invoke_all('menu_attribute_info');
drupal_alter('menu_attribute_info', $attributes);
// Merge in defaul values.
foreach ($attributes as $attribute => &$info) {
variable_set("menu_attributes_{$attribute}_enable",1);
$info += array(
'form' => array(),
'enabled' => variable_get("menu_attributes_{$attribute}_enable", 1),
'default' => '',
);
$info['form'] += array(
'#type' => 'textfield',
'#title' => $info['label'],
'#description' => isset($info['description']) ? $info['description'] : '',
'#default_value' => variable_get("menu_attributes_{$attribute}_default", $info['default']),
);
}
return $attributes;
}
Also dem Code in der foreach Schleife folgende Zeile hinzufügen:
variable_set("menu_attributes_{$attribute}_enable",1);
Ohne diese Zeile hat mir das Modul in den Menüeinstellungen eine leeres Fieldset angezeigt. (Drupal 7)
Jetzt funktionierts.
Gruß