Приветствую всех!
Помогите, пожалуйста, встроить данный скрипт на сайт под drupal. Blueprint Horizontal Drop-Down Menu
http://tympanus.net/codrops/2013/03/05/horizontal-drop-down-menu/
Под wordpress все встало как надо. А под drupal ошибок не выдает, но и не отрабатывает. Подскажите, как его правильно подключить? Заранее спасибо!
Комментарии
Код подключается в теме.
Drupal.behaviors.myBehavior = {
attach: function (context) {
$(document).ready(function() {
// All your code here
});
}
};
})(jQuery);
Пробовал обернуть так:
Drupal.behaviors.myBehavior = {
attach: function (context) {
$(document).ready(function() {
var cbpHorizontalMenu = (function() {
var $listItems = $( '#cbp-hrmenu > ul > li' ),
$menuItems = $listItems.children( 'a' ),
$body = $( 'body' ),
current = -1;
function init() {
$menuItems.on( 'click', open );
$listItems.on( 'click', function( event ) { event.stopPropagation(); } );
}
function open( event ) {
if( current !== -1 ) {
$listItems.eq( current ).removeClass( 'cbp-hropen' );
}
var $item = $( event.currentTarget ).parent( 'li' ),
idx = $item.index();
if( current === idx ) {
$item.removeClass( 'cbp-hropen' );
current = -1;
}
else {
$item.addClass( 'cbp-hropen' );
current = idx;
$body.off( 'click' ).on( 'click', close );
}
return false;
}
function close( event ) {
$listItems.eq( current ).removeClass( 'cbp-hropen' );
current = -1;
}
return { init : init };
})();
});
}
};
})(jQuery);
Ошибок не выдает. но и не отрабатывает.
А в .info файле темы подключили?
Приведите ссылку на страницу. Уверены, что скрипт подключился? Соблюдена ли структура #cbp-hrmenu > ul > li?
Да, все файлы подключены. Структура соблюдена.
Вот эту обертку уберите $(document).ready
Создай свой модуль и подключи к нему этот js код. Удобно обслуживать, удобно переносить и удобно включать-выключать
Причем тут свой модуль, если скрипт не подключается. Какая разница где я его буду подключать в теме или в модуле.
>Подскажите, как его правильно подключить?
Подсказываю.
А как вы его вообще подключили? В плане куда положили и как подключаете?
В info-файле темы подключил файлы. В нужный шаблон встроил само меню. Инициализирую вызов скрипта cbpHorizontalMenu.init(); в подвале шаблона. Но вот как раз эта функция похоже и не срабатывает.
Мне удалось его завести следующим образом: убрал эту строку инициализации. Эту функцию убрал:
$menuItems.on( 'click', open );
$listItems.on( 'click', function( event ) { event.stopPropagation(); } );
}
А строки из нее добавил в обертку $(document).ready(function()
Но остается не понятным, почему он не работает в том виде, как представлен.
Я не очень уверен, но возможно потому что есть такой хук в drupal - hook_init. Возможно он вызывается в function init() и соответственно ломает все что Вы ждете от этой функции, потому что функционал у него совсем другой.
Не из той оперы) Перепутали php и js.
алертом дебажить пробовали?))
Вставил в функцию function init() сначала этот код и все заработало.
$menuItems = $listItems.children( 'a' ),
$body = $( 'body' ),
current = -1;
Я это на семерке очень давно делал, все работало. Надо будет глянуть.
Дайте код как вы подключаете!
HTML скопируйте код и покажите.