We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 18727
    • 18 Posts
    Хочу коснуться пресловутой проблемы устранения конфликта Motools, которую использует "в базе" ModX, и JQuery.
    Юзаю JCarousel, использующую JQuery.
    Карусель нормально работает, если авторизоваться в админку ModX (когда появляется всплывающее админское окошко на motools), то карусель пропадает.
    Это, конечно, не смертельно, так как простые посетители сайта в админку не заходят, а я могу зайти в другом браузере. Но все-таки неудобно.
    Знаю, что можно устранить конфликт.
    Есть некие решения:
    http://docs.jquery.com/PrototypeAndJQuery
    http://gblog.pp.ru/programming/jquery-i-mootools-vmeste (на русском - по сути, перевод первой статьи) + http://www.htmlblog.ru/web-development/using-jquery-mootools-na-odnoj-stranice.html (там есть комментарии).
    Написано:
    Естественно в самих плагинах нужно заменить $( на jQuery(

    Только вот я не пойму, где это все менять.

    У меня есть шаблон с вызовом чанка с каруселью. Куда нужно вставить скрипт и где нужно поменять $ на JQuery?

    Фрагмент шаблона:
      <script src="manager/media/script/mootools/mootools.js"  type="text/javascript"></script>
      <script src="assets/templates/modxhost/drop_down_menu.js"  type="text/javascript"></script>
    
    {{carousel}}
    </head>
    


    Чанк carousel:
    <!--
      jCarousel core stylesheet
    -->
    <link rel="stylesheet" type="text/css" href="lib/jquery.jcarousel.css" />
    
    <!--
      jCarousel skin stylesheet
    -->
    <link rel="stylesheet" type="text/css" href="skins/bio/skin.css" />
    
    <!--
      jQuery library
    -->
    <script type="text/javascript" src="lib/jquery-1.2.3.pack.js"></script>
    
    <!--
      jCarousel library
    -->
    <script type="text/javascript" src="lib/jquery.jcarousel.pack.js"></script>
    
    
    <script type="text/javascript">
    
    var mycarousel_itemList = [
     {url: 'team/1.jpg', title: '1', page:'[~75~]'},
    {url: 'team/2.jpg', title: '2', page:'[~60~]'},
    {url: 'team/3.jpg', title: '3', page:'[~61~]'},
    {url: 'team/4.jpg', title: '4', page:'[~74~]'},
    {url: 'team/5.jpg', title: '5', page:'[~73~]'},
    {url: 'team/6.jpg', title: '6', page:'[~86~]'},
    {url: 'team/7.jpg', title: '7', page:'[~62~]'},
    ];
    
    function mycarousel_itemVisibleInCallback(carousel, item, i, state, evt)
    {
        // The index() method calculates the index from a
        // given index who is out of the actual item range.
        var idx = carousel.index(i, mycarousel_itemList.length);
        carousel.add(i, mycarousel_getItemHTML(mycarousel_itemList[idx - 1]));
    };
    
    function mycarousel_itemVisibleOutCallback(carousel, item, i, state, evt)
    {
        carousel.remove(i);
    };
    
    function mycarousel_initCallback(carousel)
    {
        // Disable autoscrolling if the user clicks the prev or next button.
         // carousel.buttonNext.bind('click', function() {
          //    carousel.startAuto(0);
         // });
    
        //carousel.buttonPrev.bind('click', function() {
        //    carousel.startAuto(0);
        //});
    
        // Pause autoscrolling if the user moves with the cursor over the clip.
        carousel.clip.hover(function() {
            carousel.stopAuto();
        }, function() {
            carousel.startAuto();
        });
    };
    
    // Credits: Robert Penners easing equations (http://www.robertpenner.com/easing/).
    jQuery.easing['BounceEaseOut'] = function(p, t, b, c, d) {
    	if ((t/=d) < (1/2.75)) {
    		return c*(7.5625*t*t) + b;
    	} else if (t < (2/2.75)) {
    		return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b;
    	} else if (t < (2.5/2.75)) {
    		return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b;
    	} else {
    		return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b;
    	}
    };
    
    /**
     * Item html creation helper.
     */
    function mycarousel_getItemHTML(item)
    {
        return '<a href="'+ item.page + '"><img src="' + item.url + '" width="190" height="148" border="0" class="mem" alt="' + item.title + '" /></a>';
    };
    
    jQuery(document).ready(function() {
        jQuery('#mycarousel').jcarousel({
    		auto: 10,
    		scroll: 5,
            wrap: 'circular',
            itemVisibleInCallback: {onBeforeAnimation: mycarousel_itemVisibleInCallback},
            itemVisibleOutCallback: {onAfterAnimation: mycarousel_itemVisibleOutCallback},
    		easing: 'BounceEaseOut',
            animation: 1000,
    		initCallback: mycarousel_initCallback
        });
    });
    </script>
    


    Да, наверное, можно использовать iCarousel (на motools), но JCarousel в примере идет с наворотами, чего я для iCarousel сделать пока не могу, так что просьба помочь.
      • 9085
      • 630 Posts
      А версия modx какая?
      Уже довольно давно работает оно на Jquery =), причем в noconflict
      Может обновиться на тестовом сервере.. если хорошо пойдет - переехать (или повторить). Главное забэкапиться не забыть..
      ps. Или я чего не так понимаю?
        Правильно заданный вопрос повышает вероятность получения нужного ответа.
        Что-то не работает? Загляните в лог ошибок!
        Есть проблема? "Локализуйте" её!
        Ответы на большинство вопросов по MODx | MODx RTFM | API Evo Revo | галопом по Европам Азиям smiley wikibooks(ru) Ditto(en) | Wayfinder e-book | Заметки и о MODx