Встроить JS на сайт

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

Аватар пользователя deodren deodren 25 сентября 2016 в 1:25

Приветствую всех!
Помогите, пожалуйста, встроить данный скрипт на сайт под drupal. Blueprint Horizontal Drop-Down Menu
http://tympanus.net/codrops/2013/03/05/horizontal-drop-down-menu/
Под wordpress все встало как надо. А под drupal ошибок не выдает, но и не отрабатывает. Подскажите, как его правильно подключить? Заранее спасибо!

Комментарии

Аватар пользователя deodren deodren 26 сентября 2016 в 13:20

Пробовал обернуть так:

(function($) {
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);

Ошибок не выдает. но и не отрабатывает.

Аватар пользователя ivnish ivnish 26 сентября 2016 в 13:45

Создай свой модуль и подключи к нему этот js код. Удобно обслуживать, удобно переносить и удобно включать-выключать

Аватар пользователя deodren deodren 26 сентября 2016 в 14:03

Причем тут свой модуль, если скрипт не подключается. Какая разница где я его буду подключать в теме или в модуле.

Аватар пользователя deodren deodren 26 сентября 2016 в 14:13

В info-файле темы подключил файлы. В нужный шаблон встроил само меню. Инициализирую вызов скрипта cbpHorizontalMenu.init(); в подвале шаблона. Но вот как раз эта функция похоже и не срабатывает.

Аватар пользователя deodren deodren 26 сентября 2016 в 14:17

Мне удалось его завести следующим образом: убрал эту строку инициализации. Эту функцию убрал:

function init() {
                $menuItems.on( 'click', open );
                $listItems.on( 'click', function( event ) { event.stopPropagation(); } );
        }

А строки из нее добавил в обертку $(document).ready(function()
Но остается не понятным, почему он не работает в том виде, как представлен.

Аватар пользователя abutan abutan 26 сентября 2016 в 14:26

Я не очень уверен, но возможно потому что есть такой хук в drupal - hook_init. Возможно он вызывается в function init() и соответственно ломает все что Вы ждете от этой функции, потому что функционал у него совсем другой.

Аватар пользователя deodren deodren 26 сентября 2016 в 15:05

Вставил в функцию function init() сначала этот код и все заработало.

$listItems = $( '#cbp-hrmenu > ul > li' ),
                $menuItems = $listItems.children( 'a' ),
                $body = $( 'body' ),
                current = -1;
Аватар пользователя Anatolii1309 Anatolii1309 7 октября 2016 в 10:37

Я это на семерке очень давно делал, все работало. Надо будет глянуть.
Дайте код как вы подключаете!
HTML скопируйте код и покажите.