Вход

Просмотр полной версии : Как устранить конфликт скриптов на 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 как локальные. То есть он поменял все базовые скрипты на эти. Но ползунки так и не заработали. Помогите кто нибудь, у кого была проблема с этими скриптами, как их сдружить?

laimas
08.10.2019, 09:23
Если нет возможности использовать плагины под новую версию jQuery, то вместо старой JQ используйте jQuery migrate.

alex_chz
08.10.2019, 09:27
Если нет возможности использовать плагины под новую версию jQuery, то вместо старой JQ используйте jQuery migrate.

А где её подключить не подскажите? В индекс пхп шаблона, или где то в другом месте. И какую именно версию миграт подключать?

laimas
08.10.2019, 09:32
Сначала подключается 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>
.... и т.д.

рони
08.10.2019, 09:35
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.все остальные скрипты.

Я бы и рад , но я так и не нашел в джумле где прописывается порядок этих скриптов. Подскажите файл. В шаблоне их нет

laimas
08.10.2019, 10:20
где прописывается порядок этих скриптов
В CMS, в частности Джумле, подключение файлов определяется правилами, все это описано в сети, просто сделайте поиск.

alex_chz
08.10.2019, 10:41
Да я уже всё перерыл, не где не могу найти. Все пишут что в шаблоне (в некотрых, от разных вебстудий, они там есть), у меня там нет. А вот файлы типо head.php - не понятно где. Те что находил похожие, нечего по скриптам в них нет.

laimas
08.10.2019, 10:51
Да я уже всё перерыл, не где не могу найти.

Вряд ли, если сразу же, например 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
} ?> Тупо тег от гугла и больше нечего

laimas
08.10.2019, 11:26
Как отключить уже подключенные до меня?

Не указывать. Если скрипты подключаются глобально, то есть для всех страниц, значит они подключаются в шаблоне индексного файла. А как подключатся по ссылке и описано, откуда-то они ни как не возьмутся. Если есть какие либо изменения в конкретной версии CMS, то эти тонкости лучше узнать на форуме Джумлы.

laimas
08.10.2019, 11:29
// Include css, js
 include_once (J_TEMPLATEDIR.J_SEPARATOR.'includes'.J_SEPARATOR. 'head.php');

Значит где можно увидеть что именно подключается как не в head.php?

alex_chz
08.10.2019, 11:29
я скинул этот самый хеад выше)

laimas
08.10.2019, 11:32
Ищите во всех подключаемых файлах, по щучьему велению они не появляются.

alex_chz
08.10.2019, 11:36
Вот именно что нету, я проверил каждый файл этого проклятого шаблона, там нет) А во всех других форумах, я тоже спрашивал, там молчание ягнят, одно название. Так то я всегда нахожу ответы сам, но этот шаблон поставил в тупик с этим юи, поэтому и написал на все формумы. Может я конечно не знаю правил тех форумов, и ответы появятся через месяц, но смысл тогда )

laimas
08.10.2019, 11:41
Вот именно что нету

Уверены? В редакторе выбираем поиск, вводим имя файла и указываем папку поиска, отмечая поиск и в подпаках. Результатом будет список файлов шаблонов, конфигураций и т.п., где имя этого файла упоминается. А далее анализ, думаем.

alex_chz
08.10.2019, 11:50
Вы наверно плохо знаете джумлу - у неё в админке видны все файлы шаблона. То есть вся папка откуда он может подключаться со всеми подпапками. Вот там и нет. Только в системе, а система джумла это мильон файлов. Да и что там искать собственно? Все подключения в индекс шаблона ведут к папкам самого шаблона как видите, и их я смотрел.

laimas
08.10.2019, 11:55
Вы наверно плохо знаете джумлу

Я могу сегодня выполнять заказ касаемый джумлы, а через неделю вордперсс. Если я бы заучивал наизусть и запомнил все 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, что вроде последняя.

Вообщем тупик становиться уже(

laimas
08.10.2019, 12:29
Точно не помню, но до версии 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
походу придется меня другое искать