Интеграция сторонний JS

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

Лучший ответ

Аватар пользователя Uzmediaidea Uzmediaidea 15 февраля 2020 в 14:05

Спасибо. Решил.

(function ($, Drupal) {
"use strict";

Drupal.behaviors.myBehavior = {
attach: function (context) {
var $context = $(context);

/* здесь наш js */

            if ( $('body').hasClass('header-fixed') ) {
                var nav = $('#site-header');

                if ( $('body').is('.header-style-8') ) {
                    var nav = $('.site-navigation-wrap');
                }

                if ( nav.length ) {
                    var offsetTop = nav.offset().top,
                        headerHeight = nav.height(),
                        injectSpace = $('<div />', {
                            height: headerHeight
                        }).insertAfter(nav);

                    $(window).on('load scroll', function(){
                        if ( $(window).scrollTop() > offsetTop ) {
                            nav.addClass('is-fixed');
                            injectSpace.show();
                        } else {
                            nav.removeClass('is-fixed');
                            injectSpace.hide();
                        }

                        if ( $(window).scrollTop() > 300 ) {
                            nav.addClass('is-small');
                        } else {
                            nav.removeClass('is-small');
                        }
                    })
                }
            }    
        }
/* здесь КОНЕЦ КОДА js */

};

})(jQuery, Drupal);

Комментарии

Аватар пользователя ivnish ivnish 15 февраля 2020 в 13:22

Если вкратце, то кладете свой скрипт в каталог темы оформления, добавляете его в файл ИМЯТЕМЫ.libraries.yml а затем нужно приаттачить эту библиотеку куда надо. Если для всех страниц без исключения, то как написал комментатор выше, можно будет добавить в .info.yml файл темы

Аватар пользователя Uzmediaidea Uzmediaidea 15 февраля 2020 в 13:28

Вот только не понимаю как обернуть (во вложении: main) скрипт в behavior.

Drupal.behaviors.exampleModule = {
  attach: function (context, settings) {
    $('.example', context).click(function () {
     
    });
  }
};

Не работает.

Аватар пользователя runner12 runner12 15 февраля 2020 в 13:42

(function ($, Drupal) {
"use strict";

Drupal.behaviors.myBehavior = {
attach: function (context) {
var $context = $(context);

/* здесь наш js */
alert('Yahoooo!');
/* здесь КОНЕЦ КОДА js */
}
};

})(jQuery, Drupal);

Аватар пользователя Uzmediaidea Uzmediaidea 15 февраля 2020 в 14:05

Спасибо. Решил.

(function ($, Drupal) {
"use strict";

Drupal.behaviors.myBehavior = {
attach: function (context) {
var $context = $(context);

/* здесь наш js */

            if ( $('body').hasClass('header-fixed') ) {
                var nav = $('#site-header');

                if ( $('body').is('.header-style-8') ) {
                    var nav = $('.site-navigation-wrap');
                }

                if ( nav.length ) {
                    var offsetTop = nav.offset().top,
                        headerHeight = nav.height(),
                        injectSpace = $('<div />', {
                            height: headerHeight
                        }).insertAfter(nav);

                    $(window).on('load scroll', function(){
                        if ( $(window).scrollTop() > offsetTop ) {
                            nav.addClass('is-fixed');
                            injectSpace.show();
                        } else {
                            nav.removeClass('is-fixed');
                            injectSpace.hide();
                        }

                        if ( $(window).scrollTop() > 300 ) {
                            nav.addClass('is-small');
                        } else {
                            nav.removeClass('is-small');
                        }
                    })
                }
            }    
        }
/* здесь КОНЕЦ КОДА js */

};

})(jQuery, Drupal);