Hello world))
Друпал уже замучал:)
Помогите разобраться с темой [theme=Sky]
В этой теме primary links выводиться следующими строками
<?php if ($primary_links): ?>
<div id="navigation"><?php print $primary_links; ?></div>
<?php endif; ?>
в FIREBUUG это выглядит так
<del class="wrap-left">
<ul class="sf-js-enabled">
<li class="leaf first active-trail"><a class="active" title="" href="/">...</a></li>
<li class="expanded"><a title="" href="/">...</a>
<ul style="visibility: hidden; display: none;" class="sf-js-enabled">
<li class="leaf first"><a title="" href="/">...</a></li>
<li class="leaf"><a title="" href="/">...</a></li>
<li class="leaf"><a title="" href="/">...</a></li>
<li class="leaf last"><a title="" href="/">...</a></li>
</ul>
</li>
</ul>
</del>
</div>
Если открыть код страницы, то меню выглядит так
<del class="wrap-left">
<ul>
<li class="leaf first active-trail"><a class="active" title="" href="/">...</a></li>
<li class="expanded"><a title="" href="/">...</a>
<ul>
<li class="leaf first"><a title="" href="/">...</a></li>
<li class="leaf"><a title="" href="/">...</a></li>
<li class="leaf"><a title="" href="/">...</a></li>
<li class="leaf last"><a title="" href="/">...</a></li>
</ul>
</li>
</ul>
</del>
</div>
Как я понимаю Firebug видит дополнительные классы которые добавляет script, а в коде их нет?
Из скриптов есть сам superfish.js и sky.js,
в sky.js есть такие строки
/**
* Superfish Menus
* http://users.tpg.com.au/j_birch/plugins/superfish/
* see js/superfish.js
*/
jQuery('#navigation ul').superfish({
animation: { opacity: 'show', height:'show' },
easing: 'swing',
speed: 250,
autoArrows: false,
dropShadows: false /* Needed for IE */
});
Это они добавляют дополнительные классы к <ul>
?
В template.php никаких функций предопределяющих вывод primary links я не нашел.
Только в файле preprocess-page.inc есть такие строки
<?php
global $user;
/**
* Create a variable that outputs the primary links as a menu tree
*/
$vars['ie_styles'] = theme('conditional_stylesheets');
/**
* Drop-down menu
* Create a variable that outputs the primary links as a menu tree
*/
if ($vars['primary_links']) {
// Find out which menu is being used for primary links and create the menu tree
$pid = variable_get('menu_primary_links_source', 'primary-links');
$tree = menu_tree($pid);
$tree = str_replace(' class="menu"', '', $tree);
// Find out how the navigation is aligned, and prepard the output
$navigation_alignment = theme_get_setting('sky_nav_alignment');
$vars['primary_links'] = '<del class="wrap-'. $navigation_alignment .'">'. $tree .'</del>';
}
?>
Внимание вопрос:
1. Как в этой теме реализовано выпадающее меню? (Как реализовано понято, с помощью скрипта,
не понятно как добавляются классы?)
2. Как к пунктам меню добавить уникальные классы?
Комментарии
Нашел другую тему с выпадающим меню [theme=Arthemia]
Как сделано выпадающее меню, вообще не понятно
Primary links выводятся строкой
<?php if (isset($primary_links)) {
print arthemia_primary($primary_links);
} ?>
в template.php эта функция предопределена следующим образом
<?php
/**
* Return a full tree of the expanded menu. Thank you multiflex-3 for this code!
*/
function arthemia_primary() {
$output = '<div id="page-bar">';
$output .= menu_tree(variable_get('menu_primary_links_source', 'primary-links'));
$output .= '</div>';
return $output;
}
?>
на странице нет js, похоже на css.
Вопросы те же.
P.S. Вообще я не понимаю, почему в темах не делают уникальные классы меню, так же намного проще темизировать!!!
Классы могут добавляться самим js
Про Скай не знаю, а про Артемию расскажу. Выпадающее меню здесь полностью на цсс.
В общем, по дефолту Друпал выводит только первый уровень меню в праймари (т.е. только ул - ли). Для того, чтобы заработало выпающее меню, нужно вывести все уровни, т.е. ул - ли - ул - ли и т.д...
<?php
/**
* Return a full tree of the expanded menu. Thank you multiflex-3 for this code!
*/
function arthemia_primary() {
$output = '<div id="page-bar">';
$output .= menu_tree(variable_get('menu_primary_links_source', 'primary-links'));
$output .= '</div>';
return $output;
}
?>
Эту функция выводит все дерево меню. Она же позволяет добавить доп.дивы в код.