Просмотр полной версии : Как устранить конфликт скриптов на Joomla3
alex_chz
08.10.2019, 08:42
Здравствуйте, сайт на последней версии джумлы 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.
alex_chz
08.10.2019, 09:27
Если нет возможности использовать плагины под новую версию 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.все остальные скрипты.
alex_chz
08.10.2019, 10:13
Сначала подключается 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.все остальные скрипты.
Я бы и рад , но я так и не нашел в джумле где прописывается порядок этих скриптов. Подскажите файл. В шаблоне их нет
где прописывается порядок этих скриптов
В CMS, в частности Джумле, подключение файлов определяется правилами, все это описано в сети, просто сделайте поиск.
alex_chz
08.10.2019, 10:41
Да я уже всё перерыл, не где не могу найти. Все пишут что в шаблоне (в некотрых, от разных вебстудий, они там есть), у меня там нет. А вот файлы типо head.php - не понятно где. Те что находил похожие, нечего по скриптам в них нет.
Да я уже всё перерыл, не где не могу найти.
Вряд ли, если сразу же, например https://zaurmag.ru/joomla/podklyuchenie-stilej-i-js-plaginov-v-joomla.html
alex_chz
08.10.2019, 11:19
))Да я там читал. То же шаблон индекс. Который у меня уже есть и там подключаются откудато скрипты и совсем не так как в статье. Что по статье, я уже вставлял эти скрипты в хеад в шаблоне и через пхп и просто через скрипт, они появляются в хеде и что?? Как отключить уже подключенные до меня? Вот это найдите)
alex_chz
08.10.2019, 11:23
Вот мой индекс шаблона
<?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.$th is->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_SEP ARATOR.'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>
alex_chz
08.10.2019, 11:26
А вот файл, откуда якобы он берет скрипты, судя по этой записи:
<?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
} ?> Тупо тег от гугла и больше нечего
Как отключить уже подключенные до меня?
Не указывать. Если скрипты подключаются глобально, то есть для всех страниц, значит они подключаются в шаблоне индексного файла. А как подключатся по ссылке и описано, откуда-то они ни как не возьмутся. Если есть какие либо изменения в конкретной версии CMS, то эти тонкости лучше узнать на форуме Джумлы.
// Include css, js
include_once (J_TEMPLATEDIR.J_SEPARATOR.'includes'.J_SEPARATOR. 'head.php');
Значит где можно увидеть что именно подключается как не в head.php?
alex_chz
08.10.2019, 11:29
я скинул этот самый хеад выше)
Ищите во всех подключаемых файлах, по щучьему велению они не появляются.
alex_chz
08.10.2019, 11:36
Вот именно что нету, я проверил каждый файл этого проклятого шаблона, там нет) А во всех других форумах, я тоже спрашивал, там молчание ягнят, одно название. Так то я всегда нахожу ответы сам, но этот шаблон поставил в тупик с этим юи, поэтому и написал на все формумы. Может я конечно не знаю правил тех форумов, и ответы появятся через месяц, но смысл тогда )
Вот именно что нету
Уверены? В редакторе выбираем поиск, вводим имя файла и указываем папку поиска, отмечая поиск и в подпаках. Результатом будет список файлов шаблонов, конфигураций и т.п., где имя этого файла упоминается. А далее анализ, думаем.
alex_chz
08.10.2019, 11:50
Вы наверно плохо знаете джумлу - у неё в админке видны все файлы шаблона. То есть вся папка откуда он может подключаться со всеми подпапками. Вот там и нет. Только в системе, а система джумла это мильон файлов. Да и что там искать собственно? Все подключения в индекс шаблона ведут к папкам самого шаблона как видите, и их я смотрел.
Вы наверно плохо знаете джумлу
Я могу сегодня выполнять заказ касаемый джумлы, а через неделю вордперсс. Если я бы заучивал наизусть и запомнил все CMS, самопальные движки и прочее с чем приходилось мне работать, я давно бы был пациентом дурдома. Если я что-то забываю, а мне на текущий момент требуется, то я просто "обновляю" познание документации. Но что я могу сказать и это точно, из ничего что-то не появится, не надо пороть чепухи, имена файлов подключаемых обязательно где-то прописаны, это либо файлы, либо в базе.
alex_chz
08.10.2019, 12:24
Хз, где они там прописаны. Вот для тех кому интересно как переопределить базовые скрипты в джумле, прописав это в индексе шаблона
<?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, вроде бы так.
Если все нужные файлы подключены, но не работает, то уже нужно смотреть логи в отладчике браузера.
alex_chz
08.10.2019, 12:30
Точно не помню, то до версии 2.0, фай миграции имеет версию 1.2.
Если все нужные файлы подключены, но не работает, то уже нужно смотреть логи в отладчике браузера.
Опа, щяс проверю и переопределю
alex_chz
08.10.2019, 12:39
Не не пашет. Логи пишут вот что, в меню у меня подключается еще и библеотека 2.1.1. То есть конфилкта с джумловским скриптом нет, а с меню есть
alex_chz
08.10.2019, 12:43
походу придется меня другое искать
vBulletin® v3.6.7, Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot