Возможность указывать порядок вывода javascript файлов в макете или зависимость от других скриптов

Например, нам нужно вывести jquery, slick и код инициализации из макета.
В коде макета указываем вот так:



На вкладке Javascript в макете указываем инициализацию:

(function($){
// slider
$('.object_pic').slick({
dots: true,
infinite: true,
speed: 300,
slidesToShow: 1,
adaptiveHeight: true,
arrows: false
});
})(jQuery);

В итоге все это будет выведено в таком порядке:





Что приводит к ошибке.

getis 20.02.2018
-1
549
6

Комментарии

  • Core_Page::instance()
    // jQuery
    ->prependJs('/includes/slick/slick.min.js')
    // всплывает в начало очереди
    ->prependJs('/hostcmsfiles/jquery/jquery.min.js')
    ->showJs();

    20.02.2018 17:41:50
    hostcms

    Спасибо, так работает.
    На мой взгляд, не совсем интуитивно понятно, получается инвертированное отображение.

    20.02.2018 17:56:01
    getis

    prependJs() добавляет в самое начало, единичное использование добавить просто в начало, если вызывать несколько раз, то последний prependJs() добавит в самое начало, сместив ранее добавленные через prependJs()

    20.02.2018 18:38:10
    hostcms
  • Предложенный вариант позволяет только добавить скрипты вначало, но не указывает порядок.

    Например, мне нужно подключить скрипты четко в следующем порядке (иначе просто работать не будет):

    /hostcmsfiles/jquery/jquery.min.js
    /includes/slick/slick.min.js
    /templates/template21/script.js

    Если я укажу вывод так, как вы мне советуете, то ничего не получится, например вот этот код:

    Core_Page::instance()
    // jQuery
    ->prependJs('/hostcmsfiles/jquery/jquery.min.js')
    ->prependJs('/hostcmsfiles/jquery/jquery.min.js')
    ->showJs();

    выводит у меня в таком порядке:

    script src="/includes/slick/slick.min.js"
    script src="/hostcmsfiles/jquery/jquery.min.js"
    script src="/templates/template21/script.js"

    так как скрипт slick.min.js зависим от jquery.min.js, то он работать не будет, если его вывести до подключения jquery.min.js.

    20.02.2018 17:40:09
    getis

    Core_Page::instance()
    // jQuery
    ->prependJs('/hostcmsfiles/jquery/jquery.min.js')
    ->prependJs('/includes/slick/slick.min.js')
    ->showJs();

    20.02.2018 17:41:05
    getis
  • Не совсем понял задачу, если вам нужно скрипты подключать в макете в другом порядке, то есть варианты с http://www.hostcms.ru/documentation/step-by-step/templates/template/

    Core_Page::instance()
    // jQuery
    ->prependJs('/hostcmsfiles/jquery/jquery.min.js')

    20.02.2018 17:29:07
    hostcms