Я пытаюсь добавить выпадающие меню в тему drupal, которая использует текстовое раздвижное CSS-округление.Drupal Добавление Span внутри тегов в Nice Menus
Текущая версия использует первичные ссылки для инъекции span в теги, которые отлично работают. Но не поддерживает выпадающие меню.
Рабочий код:
<?php print theme('links', $primary_links, array('class' => 'links primary-links')) ?>
В шаблоне с template.php добавления файла:
<?php
// function for injecting spans inside anchors which we need for the theme's rounded corner background images
function strands_guybrush_links($links, $attributes = array('class' => 'links')) {
$output = '';
if (count($links) > 0) {
$output = '<ul'. drupal_attributes($attributes) .'>';
$num_links = count($links);
$i = 1;
foreach ($links as $key => $link) {
$class = $key;
// Add first, last and active classes to the list of links to help out themers.
if ($i == 1) {
$class .= ' first';
}
if ($i == $num_links) {
$class .= ' last';
}
if (isset($link['href']) && ($link['href'] == $_GET['q'] || ($link['href'] == '<front>' && drupal_is_front_page()))) {
$class .= ' active';
}
$output .= '<li'. drupal_attributes(array('class' => $class)) .'>';
if (isset($link['href'])) {
$link['title'] = '<span class="link">' . check_plain($link['title']) . '</span>';
$link['html'] = TRUE;
// Pass in $link as $options, they share the same keys.
$output .= l($link['title'], $link['href'], $link);
}
else if (!empty($link['title'])) {
// Some links are actually not links, but we wrap these in <span> for adding title and class attributes
if (empty($link['html'])) {
$link['title'] = check_plain($link['title']);
}
$span_attributes = '';
if (isset($link['attributes'])) {
$span_attributes = drupal_attributes($link['attributes']);
}
$output .= '<span'. $span_attributes .'>'. $link['title'] .'</span>';
}
$i++;
$output .= "</li>\n";
}
$output .= '</ul>';
}
return $output;
}
?>
Так я добавил Nice Menu module, который хорошо работает и позволяет выпадающее меню функций для моего навигацию, которая теперь обращена из шаблона, используя:
<?php print theme_nice_menu_primary_links() ?>
Проблема в том, что теги должны иметь промежутки внутри, чтобы разрешить выбранную разметку состояния. Я пробовал каждый угол, который мог найти, чтобы отредактировать функцию drupal menu_item_link, которая используется красивыми меню для создания ссылок.
E.g. Я смотрел на форум drupal в течение двух дней и без радости.
линии в модуле, которые строят ссылки являются:
function theme_nice_menu_build($menu) {
$output = '';
// Find the active trail and pull out the menus ids.
menu_set_active_menu_name('primary-links');
$trail = menu_get_active_trail('primary-links');
foreach ($trail as $item) {
$trail_ids[] = $item['mlid'];
}
foreach ($menu as $menu_item) {
$mlid = $menu_item['link']['mlid'];
// Check to see if it is a visible menu item.
if ($menu_item['link']['hidden'] == 0) {
// 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://', '<', '>', '&', '=', '?', ':'), '', $menu_item['link']['href']);
// Convert slashes to dashes.
$clean_path = str_replace('/', '-', $clean_path);
$class = 'menu-path-'. $clean_path;
$class .= in_array($mlid, $trail_ids) ? ' active' : '';
// If it has children build a nice little tree under it.
if ((!empty($menu_item['link']['has_children'])) && (!empty($menu_item['below']))) {
// Keep passing children into the function 'til we get them all.
$children = theme('nice_menu_build', $menu_item['below']);
// Set the class to parent only of children are displayed.
$class .= $children ? ' menuparent ' : '';
// Add an expanded class for items in the menu trail.
$output .= '<li id="menu-'. $mlid .'" class="'. $class .'">'. theme('menu_item_link', $menu_item['link']);
// Build the child UL only if children are displayed for the user.
if ($children) {
$output .= '<ul>';
$output .= $children;
$output .= "</ul>\n";
}
$output .= "</li>\n";
}
else {
$output .= '<li id="menu-'. $mlid .'" class="'. $class .'">'. theme('menu_item_link', $menu_item['link']) .'</li>'."\n";
}
}
}
return $output;
}
Как вы можете видеть, что $ вывод использует menu_item_link для разбора массива в ссылки и добавили класс активных к выбранной ссылке навигации.
Вопрос в том, как добавить диапазон внутри тегов или как я могу обернуть теги с помощью span, который имеет активный класс для стиля ссылок на раздвижные двери?
Если ответ решает вашу проблему, вы должны принять его, нажав галочку. Вы также можете использовать функциональность upvote для голосования по хорошим/полезным ответам, щелкнув маленькую стрелку, указывающую в этом ответе. – googletorp