Помогите разобраться с темой sky

Главные вкладки

Аватар пользователя kpv_dnepr@drupal.org kpv_dnepr@drupal.org 12 декабря 2010 в 12:14

Hello world))

Друпал уже замучал:)

Помогите разобраться с темой [theme=Sky]
В этой теме primary links выводиться следующими строками


    <?php if ($primary_links): ?>
      <div id="navigation"><?php print $primary_links?></div>
    <?php endif; ?>

в FIREBUUG это выглядит так

<div id="navigation">
 <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>

Если открыть код страницы, то меню выглядит так

<div id="navigation">
 <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 есть такие строки

Drupal.behaviors.skyBehavior = function(context) {
  /**
   * 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. Как к пунктам меню добавить уникальные классы?

Комментарии

Аватар пользователя kpv_dnepr@drupal.org kpv_dnepr@drupal.org 12 декабря 2010 в 13:31

Нашел другую тему с выпадающим меню [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. Вообще я не понимаю, почему в темах не делают уникальные классы меню, так же намного проще темизировать!!!

Аватар пользователя Geldora Geldora 12 декабря 2010 в 18:54

Про Скай не знаю, а про Артемию расскажу. Выпадающее меню здесь полностью на цсс.

В общем, по дефолту Друпал выводит только первый уровень меню в праймари (т.е. только ул - ли). Для того, чтобы заработало выпающее меню, нужно вывести все уровни, т.е. ул - ли - ул - ли и т.д...

<?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;
}
?>

Эту функция выводит все дерево меню. Она же позволяет добавить доп.дивы в код.