Как устранить конфликт скриптов на Joomla3
Здравствуйте, сайт на последней версии джумлы 3.7.... На некоторых страницах поставил калькулятор на основе библиотеке ui. На всех страницах с калькулятором подключил скрипты, прямо в материале
<link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/themes/smoothness/jquery-ui.css"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script> <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui-touch-punch/0.2.3/jquery.ui.touch-punch.min.js"></script> Они конфликтуют с со скриптами от самой джумлы и слайдер(ползунок не работает). Как решить этот конфликт? Поставил временно плагин System - jQuery Easy и отключил при помощи него эти страницы (теперь слайдер там работает, ноглавное меню не хочет открываться и в мобильной версии тоже не корректно работает(меню) Пример страницы https://4zaim.kz/mfo/kredit-7 Побывал это тоже, - заменить все $ на jQuery и ставил noConflict Нечего не меняется, только ошибки начинают ссыпаться в консоле Проблема с версиями jQuery - это понятно. Но если отключать версии джумлы, то меню вообще не работает, если отключать версию слайдера, то не работает слайдер <link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/themes/smoothness/jquery-ui.css"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script> <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script> Эти скрипты залил на хост и подключил их через плагин System - jQuery Easy как локальные. То есть он поменял все базовые скрипты на эти. Но ползунки так и не заработали. Помогите кто нибудь, у кого была проблема с этими скриптами, как их сдружить? |
Если нет возможности использовать плагины под новую версию jQuery, то вместо старой JQ используйте jQuery migrate.
|
Цитата:
|
Сначала подключается JQ, затем JQ migrate, затем все что использует JQ, типа:
<script src="....../jquery-2.0.min.js"></script> <script src="....../jquery-migrate-1.2.1.min.js"></script> <script src="....../jquery-ui.min.js"></script> .... и т.д. |
alex_chz,
jquery грузят один раз!!! (желательно выше версию!!!) jquery-ui грузят один раз!!! порядок загрузки 1.jquery 2.jquery-ui 3.плагины на основе jquery и jquery-ui 4. все скрипты использующие 1,2,3 5.все остальные скрипты. |
Цитата:
Цитата:
|
Цитата:
|
Да я уже всё перерыл, не где не могу найти. Все пишут что в шаблоне (в некотрых, от разных вебстудий, они там есть), у меня там нет. А вот файлы типо head.php - не понятно где. Те что находил похожие, нечего по скриптам в них нет.
|
Цитата:
|
))Да я там читал. То же шаблон индекс. Который у меня уже есть и там подключаются откудато скрипты и совсем не так как в статье. Что по статье, я уже вставлял эти скрипты в хеад в шаблоне и через пхп и просто через скрипт, они появляются в хеде и что?? Как отключить уже подключенные до меня? Вот это найдите)
|
Вот мой индекс шаблона
<?php /* * ------------------------------------------------------------------------ * Copyright (C) 2009 - 2013 The YouTech JSC. All Rights Reserved. * @license - GNU/GPL, http://www.gnu.org/licenses/gpl.html * Author: The YouTech JSC * Websites: http://www.smartaddons.com - http://www.cmsportal.net * ------------------------------------------------------------------------ */ // no direct access defined( '_JEXEC' ) or die( 'Restricted access' ); header('X-UA-Compatible: IE=edge'); // Object of class YtTemplate $doc = JFactory::getDocument(); $app = JFactory::getApplication(); $option = $app->input->get('option'); // Check yt plugin if(!defined('YT_FRAMEWORK')) throw new Exception(JText::_('INSTALL_YT_PLUGIN')); if(!defined('J_TEMPLATEDIR') )define('J_TEMPLATEDIR', JPATH_SITE.J_SEPARATOR.'templates'.J_SEPARATOR.$this->template); // Include file: frame_inc.php include_once (J_TEMPLATEDIR.J_SEPARATOR.'includes'.J_SEPARATOR.'frame_inc.php'); // Check direction for html $dir = ($doc->direction == 'rtl') ? ' dir="rtl"' : ''; /** @var YTFramework */ $responsive = $yt->getParam('layouttype'); $favicon = $yt->getParam('favicon'); $layoutType = $yt->getParam('layouttype'); $preloader = $yt->getParam('preloader'); //Coming Soon $this->baseUrl = JURI::base(); if($yt->getParam('comingsoon_mode')) header("Location: ".$this->baseUrl."?tmpl=comingsoon"); ?> <!DOCTYPE html> <html <?php echo $dir; ?> lang="<?php echo $this->language; ?>"> <head> <jdoc:include type="head" /> <meta name="HandheldFriendly" content="true"/> <meta name="format-detection" content="telephone=no"> <meta name="apple-mobile-web-app-capable" content="YES" /> <!-- META FOR IOS & HANDHELD --> <?php if($responsive=='res'): ?> <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes"/> <?php endif ?> <!-- LINK FOR FAVICON --> <?php if($favicon) : ?> <link rel="icon" type="image/x-icon" href="<?php echo $favicon?>" /> <?php endif; ?> <?php // Include css, js include_once (J_TEMPLATEDIR.J_SEPARATOR.'includes'.J_SEPARATOR.'head.php'); ?> <!-- Global site tag (gtag.js) - Google Ads: 706973679 --> <script async src="https://www.googletagmanager.com/gtag/js?id=AW-706973679"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'AW-706973679'); </script> <!-- Event snippet for Кнопка перехода conversion page In your html page, add the snippet and call gtag_report_conversion when someone clicks on the chosen link or button. --> <script> function gtag_report_conversion(url) { var callback = function () { if (typeof(url) != 'undefined') { window.location = url; } }; gtag('event', 'conversion', { 'send_to': 'AW-706973679/rYQfCIzkn6wBEO-fjtEC', 'event_callback': callback }); return false; } </script> <script src="https://yastatic.net/pcode/adfox/loader.js" crossorigin="anonymous"></script> <script data-ad-client="ca-pub-6943655653791297" async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> </head> <?php //sub Menu Home page $menu = JFactory::getApplication()->getMenu(); if (is_object( $menu->getActive() ) ) { $getMenu_route = $menu->getActive()->route; $subMenu_home = strpos($getMenu_route,'home/'); }else{ $subMenu_home =''; } //render a class for home page $cls_body = ''; $cls_body .= $yt->isHomePage() || is_numeric($subMenu_home) ? 'homepage ' : ''; //Add Layout $cls_body .= 'home-'.$layout. ' '; //For RTL direction $cls_body .= ($doc->direction == 'rtl') ? 'rtl' . ' ' : ''; //add a class according to the template name $cls_body .= ($layoutType !='res') ? 'no-res'.'':'res'; $type_layout = 'layout-'.$yt->getParam('typelayout'); $app = JFactory::getApplication('site'); $pageclass = $app->getParams('com_content'); ?> <body id="bd" class="<?php echo $cls_body; ?>" > <jdoc:include type="modules" name="debug" /> <?php if($preloader): ?> <div class="loader-content"> <div class="cssload-loader"> <div class="cssload-inner cssload-one"></div> <div class="cssload-inner cssload-two"></div> <div class="cssload-inner cssload-three"></div> </div> </div> <?php endif;?> <div id="yt_wrapper" class="<?php echo $type_layout; ?>"> <?php /*render blocks. for positions of blocks, please refer layouts folder. */ foreach($yt_render->arr_TB as $tagBD) { //BEGIN Check if position not empty if( $tagBD["countModules"] > 0 ) { // BEGIN: Content Area if( ($tagBD["name"] == 'content') ) { //class for content area $cls_content = $tagBD['class_content']; $cls_content .= ' '.$pageclass->get('pageclass_sfx'); $cls_content .= ' block '. $option ; echo "<{$tagBD['html5tag']} id=\"{$tagBD['id']}\" class=\"{$cls_content}\">"; ?> <div class="container"> <div class="row"> <?php $countL = $countR = $countM = 0; // BEGIN: foreach position of block content $yt->_countPosGroup($tagBD['positions']); foreach($tagBD['positions'] as $position): include(J_TEMPLATEDIR.J_SEPARATOR.'includes'.J_SEPARATOR.'block-content.php'); endforeach; // END: foreach position of block content ?> </div > </div > <?php echo "</{$tagBD['html5tag']}>"; ?> <?php // END: Content Area // BEGIN: For other blocks } elseif ($tagBD["name"] != 'content'){ echo "<{$tagBD['html5tag']} id=\"{$tagBD['id']}\" class=\"block\">"; ?> <div class="container"> <div class="row"> <?php if( !empty($tagBD["hasGroup"]) && $tagBD["hasGroup"] == "1"){ // BEGIN: For Group attribute $flag = ''; $openG = 0; $c = 0; foreach( $tagBD['positions'] as $posFG ): $c = $c + 1; ....... </body> </html> |
А вот файл, откуда якобы он берет скрипты, судя по этой записи:
<?php // Include css, js include_once (J_TEMPLATEDIR.J_SEPARATOR.'includes'.J_SEPARATOR.'head.php'); ?> Вот он <?php /* * ------------------------------------------------------------------------ * Copyright (C) 2009 - 2013 The YouTech JSC. All Rights Reserved. * @license - GNU/GPL, http://www.gnu.org/licenses/gpl.html * Author: The YouTech JSC * Websites: http://www.smartaddons.com - http://www.cmsportal.net * ------------------------------------------------------------------------ */ // no direct access defined( '_JEXEC' ) or die( 'Restricted access' ); ?> <?php if($yt->getParam('enableGoogleAnalytics')=='1' && $yt->getParam('googleAnalyticsTrackingID')!='' ){ ?> <!--For param enableGoogleAnalytics--> <script type="text/javascript"> var _gaq = _gaq || []; _gaq.push(["_setAccount", "<?php echo $yt->getParam('googleAnalyticsTrackingID')?>"]); _gaq.push(["_trackPageview"]); (function() { var ga = document.createElement("script"); ga.type = "text/javascript"; ga.async = true; ga.src = ("https:" == document.location.protocol ? "https://ssl" : "http://www") + ".google-analytics.com/ga.js"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(ga, s); })(); </script> <?php } ?>Тупо тег от гугла и больше нечего |
Цитата:
|
// Include css, js
include_once (J_TEMPLATEDIR.J_SEPARATOR.'includes'.J_SEPARATOR. 'head.php'); Значит где можно увидеть что именно подключается как не в head.php? |
я скинул этот самый хеад выше)
|
Ищите во всех подключаемых файлах, по щучьему велению они не появляются.
|
Вот именно что нету, я проверил каждый файл этого проклятого шаблона, там нет) А во всех других форумах, я тоже спрашивал, там молчание ягнят, одно название. Так то я всегда нахожу ответы сам, но этот шаблон поставил в тупик с этим юи, поэтому и написал на все формумы. Может я конечно не знаю правил тех форумов, и ответы появятся через месяц, но смысл тогда )
|
Цитата:
|
Вы наверно плохо знаете джумлу - у неё в админке видны все файлы шаблона. То есть вся папка откуда он может подключаться со всеми подпапками. Вот там и нет. Только в системе, а система джумла это мильон файлов. Да и что там искать собственно? Все подключения в индекс шаблона ведут к папкам самого шаблона как видите, и их я смотрел.
|
Цитата:
|
Хз, где они там прописаны. Вот для тех кому интересно как переопределить базовые скрипты в джумле, прописав это в индексе шаблона
<?php $doc = JFactory::getDocument(); $scr = '/media/jui/js/jquery.min.js'; $repl_scr = '//ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js'; $key = array_keys($doc->_scripts); $value = array_values($doc->_scripts); $key = str_replace($scr, $repl_scr, $key); $doc->_scripts = array_combine($key, $value); ?> То есть он заменил исходный jquery.min.js. Стал на его место. Но что в итоге, не х.. НЕ ЗАРАБОТАЛ. И в самой джумле если что с коробки подключен миграт, на 3 подключена версия 1.4.1, что вроде последняя. Вообщем тупик становиться уже( |
Точно не помню, но до версии 2.0, фай миграции имеет версию 1.2, вроде бы так.
Если все нужные файлы подключены, но не работает, то уже нужно смотреть логи в отладчике браузера. |
Цитата:
|
Не не пашет. Логи пишут вот что, в меню у меня подключается еще и библеотека 2.1.1. То есть конфилкта с джумловским скриптом нет, а с меню есть
|
походу придется меня другое искать
|
Часовой пояс GMT +3, время: 05:02. |