Проблемы с главным меню Drupal 7, JQuery & Superfish в обновленной теме - PullRequest
0 голосов
/ 08 января 2011

Я обновляю тему Drupal 6 до Drupal 7. В версии Drupal 6 у меня была приятная небольшая функция меню, которая вставляла JQuery в главное меню, чтобы он работал как выпадающий список (+ функция препроцессора для получения дерево меню), и это прекрасно работало.

В версии моей темы на Drupal 7 я вызываю JavaScripts в своем информационном файле, как я это делал в Drupal 6, и, глядя на источник отображаемой страницы, она не внедряется в само меню. Я называю приведенный ниже скрипт, а также стандартный superfish.js (который снова отлично работал в Drupal 6.)

   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 */
  });
};

Я верю линии, которая делает всю тяжелую работу: jQuery('#navigation ul').superfish({ (Обратите внимание, что мой окружающий идентификатор div для меню - "#navigation", и после этого начинается тег <ul>.)

Я использую функцию препроцессора в моей версии Drupal 7, чтобы получить дерево меню для главного меню, и я вижу все дерево, просматриваемое в Firebug, но я вижу, что введенный код Jquery отсутствует.

В моей теме Drupal 6 я бы увидел:

<ul class="menu sf-js-enabled" style="visibility: hidden; display: none;"> ... - и, конечно, наведите курсор на изменение «display: none» на «visible».

Но в версии моей темы для Drupal 7 все, что я вижу в Firebug, это: <ul class="menu"> ...

Я не знаю много о JavaScript, поэтому я надеюсь, что это может кому-то позвонить, чтобы узнать, как найти исправление. Благодаря.

Ответы [ 4 ]

1 голос
/ 08 января 2011

Вы можете взглянуть на Управление js в Drupal 7 , чтобы начать работу. Совет заключается в создании замыкания, хотя я не понимаю, как это должно повлиять на ваш код.

Если это не поможет, вы можете проверить, выполняется ли файл поведения / js, выполнив alert('message') или что-то подобное в коде.

0 голосов
/ 19 октября 2011

Просто понял, что я никогда не публиковал рабочий код. Вот код Drupal 7, который работает:

(function ($) {

Drupal.behaviors.MyTheme = {

attach: function(context, settings) {
$('#navigation ul', context).superfish({

animation: { opacity: 'show', height:'show' },
speed: 250,
autoArrows: false,
dropShadows: false /* Needed for IE */

});
}};

})(jQuery);
0 голосов
/ 05 марта 2011

Святая корова,

потратил 2 дня, чтобы решить аналогичную проблему с плагином jquery цикла. Решение здесь:

http://drupal.org/node/1043478#comment-4168166

По швам будет проблема с php кодом. Вы должны обеспечить <'> как <\'>

0 голосов
/ 08 января 2011

Вот код, основанный на ссылке на страницу, которую мне прислал @googletorp:

(function ($) {

  Drupal.behaviors.MyTheme = {
    attach: function(context, settings) {
      $('#navigation ul', context).superfish(function () {

      });
    }
  };

})(jQuery);

В Drupal 7 теперь работают выпадающие меню, но мне все еще нужно выяснить, как добавить код для замедления, скорости и анимации ...

...