Начать новую тему

Подключение скриптов после подключения Jquery

У нас есть модуль Анимированные блоки. Он подключает скрипты в формате:


<script type="text/javascript">

// Animation blocks

$(document).ready(function() {

...


Скрипты подключаются хуком index:footer


Раньше модуль работал корректно, но сейчас страница выдает ошибку (можно здесь посмотреть: http://store-c9zh.mymerchium.ru/)


Uncaught ReferenceError: $ is not defined


Я так понмаю, что это из-за того, что Jquery теперь подключается после подключения хука index:footer


Подскажите, пожалуйста, как решить данную проблему.


Спасибо.

Здравствуйте!


Извините за эти затруднения, мы постараемся решить это проблему как можно быстрее

Сейчас для подключения скриптов следует использовать хук index:scripts. Он вызывается после подключения jquery и подключение к этому хуку должно исправить проблему.

Попробовал подключить хук index:scripts - вообще ничего не подключает.

Пробовал и в файле scripts.post.tpl js код прописывать и {script src="js/scripts.js"} писать. В общем на все, что у меня фантазии хватило, все перепробовал, но ни при одном варианте хук вообще не подцепает ничего.

Пожалуйста, помогите разобраться и сразу скажите, как правильно делать. В файле scripts.post.tpl js код писать или через {script src="js/scripts.js"} подключать.

Ребят, ответьте, пожалуйста. Клиент приобрел модуль и ждет, что он будет работать...

Используйте хук index:scripts, а в этом хуке правильнее всего делать так:

<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.11.1/jquery-ui.min.js" data-no-defer></script>

т.е. вставлять обычный HTML-тэг script.

Можно и инлайн:

<script>
console.log('test1');
</script>

Как я уже написал, не подцепается хук.


Код в app.php:
$footer_hook_content = file_get_contents('hooks/index/scripts.post.tpl');

$res = $merchium->createRequest('template_hooks', array(

    'hookname' => 'index:scripts',

    'type' => 'post',

    'body' => $footer_hook_content,

));

Код в scripts.post.tpl:

<script src="js/scripts.js"></script>


Код в scripts.js:

$(document).ready(function() {

    cp_animated_classes = new Array('bounce', 'flash', 'pulse', 'rubberBand', 'shake', 'swing', 'tada', 'bounceIn', 'bounceInDown', 'bounceInLeft', 'bounceInRight', 'bounceInUp', 'fadeIn',

    'fadeInDown', 'fadeInDownBig', 'fadeInLeft', 'fadeInLeftBig', 'fadeInRight', 'fadeInRightBig', 'fadeInUp', 'fadeInUpBig', 'flip', 'flipInX', 'flipInY', 'lightSpeedIn',

    'rotateIn', 'rotateInDownLeft', 'rotateInDownRight', 'rotateInUpLeft', 'rotateInUpRight', 'rollIn', 'zoomIn', 'zoomInDown', 'zoomInLeft', 'zoomInRight', 'zoomInUp');



    function fn_cp_animation_effect() {

        $('.cp-power-effect-block').each(function() {      

            var h = $(window).height(); 

            

            if ($(this).offset().top - ($(window).scrollTop()+h) <= -100) {

                $(this).children('.animated').css('opacity', '1');

            } else if ($(this).offset().top - ($(window).scrollTop()+h) <= -40) {

                $(this).children('.animated').css('opacity', '0');

            }    

                

            if ($(this).offset().top - ($(window).scrollTop()+h) <= -100) {

                for (var i = 0; i < cp_animated_classes.length; i++) {

                     if ($(this).children('.animated').hasClass('cp-' + cp_animated_classes[i])) {

                        $(this).children('.animated').addClass(cp_animated_classes[i]);

                     }

                } 

                

            } else {

                for (var i = 0; i < cp_animated_classes.length; i++) {

                     if ($(this).children('.animated').hasClass('cp-' + cp_animated_classes[i])) {

                        $(this).children('.animated').removeClass(cp_animated_classes[i]);

                     }

                }     

            }

        });    

    }


     $('.animated').each(function(i, elm) {

         $(elm).before("<div class='cp-power-effect-block'></div>");

         $(elm).appendTo($(elm).prev());      

     });   

     

    fn_cp_animation_effect();


    $(window).scroll(function(){

        fn_cp_animation_effect();

    });

});


Заметьте, что как только я пытаюсь использовать хук index:footer js код подцепается. Т.е. вряд ли проблема в том, что я что-то не так делаю.


Вы уверены, что у вас хук index:scripts работает?

Только что перепроверил. Просто меняю 'hookname' => 'index:scripts' на 'hookname' => 'index:footer' и js подцепается. Так что похоже, что все-таки index:scripts просто не работает.

Здравствуйте.


Проблема с хуком index:scripts подтвердилась. Мы уже решаем этот вопрос и сообщим вам, когда исправим ситуацию.


В качестве временного решения, пожалуйста, оберните код в хуке index:footer следующим образом:

 

setTimeout(function(){
    // YOUR CODE HERE
}, 200);

 

Спасибо.

Мария,


Спасибо за ответ!


Войдите, чтобы опубликовать свой комментарий