Как то потребовалось добавить в Drupal 7 пункт меню, несущий чисто информативный характер, т.е. при клике на него ничего не должно происходить.

На просторах интернета были найдены несколько способов решения данной задачи: 

  • С помощью модуля Menu Firstchild, но в связке с nice menus он работать не захотел. Прочитать об установке Menu Firstchild на русском языке можно здесь.
  • С помощью хука темы theme_menu_link(array $variables). Об этом я расскажу подробнее, т.к. это самый предпочтительный, на мой взгляд, вариант.

Много информации по этой теме есть на официальном сайте Drupal (Menu items that are not links). Там выложено достаточно много способов, который и послужили основой для написания немного измененной функции. Итак, вот как выглядит функция в моём случае:

function НАЗВАНИЕ_ТЕМЫ_menu_link(array $variables) {
	$element = $variables['element'];
	$sub_menu = '';
	if ($element['#below']) {
		$sub_menu = drupal_render($element['#below']);
	}
	if (strpos($element['#href'], "none")) {
		$output = '<a href="#" onclick="return false" class="nolink">'.$element['#title'].'</a>';
	} else {
		$output = l($element['#title'], $element['#href'], $element['#localized_options']);
	}
	return '<li' . drupal_attributes($element['#attributes']) . '>' . $output . $sub_menu . "</li>\n";
}

В ней, вместо НАЗВАНИЕ_ТЕМЫ необходимо подставить название своей темы, и сохранить эту функцию в файле template.php

Теперь, при добавлении пункта меню нужно в адресе ссылки писать http://none, и ссылка станет не кликабельной.

Для себя я добавил немного CSS, чтобы неактивная ссылка выделялась на фоне других:

/* Пункт меню не являющийся ссылкой */
a.nolink {
	color: #aaa; /* Цвет текста ссылки */
	cursor: default; /* Курсор стрелки */
}