Как устранить конфликт скриптов на 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, время: 16:10. |