Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Joomla 3.5 / helix core / bootstrap - конфликт jquery (https://javascript.ru/forum/jquery/63914-joomla-3-5-helix-core-bootstrap-konflikt-jquery.html)

VideoProm 07.07.2016 19:09

Joomla 3.5 / helix core / bootstrap - конфликт jquery
 
Здравствуйте, имеется сайт:
1. joomla 3.5
2. Helix V2 framework на Twitter Bootstrap
3. установлен компонент rsform_pro (jQuery v1.11.2)
4. модуль - universal_video_player (jquery/1.11.0/) (jqueryui/1.10.4/)
5. модуль - jux_portfolio (jquery/1.8.3/) (jqueryui/1.9.2/)
6. модуль - jplayer ver. 2.9.2 (jQuery v1.11.1) отказывается работать (

еще есть ошибка: Uncaught TypeError: $ is not a function (на форуме пишут что нужно заменить $ на jquery и мне как новичку непонятно где это сделать

подскажите пожалуйста где конфликт и как исправить

dd_smol 07.07.2016 23:24

F12 и обновить страницу в консоли покажут где ошибка.

VideoProm 08.07.2016 10:05

пишет страница:81

имеет в виду что 81 строка, но в каком документе?

dd_smol 08.07.2016 11:47

не страница а строка и не 81 а 83 и 361 ... скрипты встроены в страницу ... как она у вас формируется мне не известно так что в каком именно файле править нужно подсказать не могу.

Код:

TypeError: $ is not a function
$(document).ready(function(){
loading (строка 83, столбец 5)

ReferenceError: startLivehelp is not defined
startLivehelp();
loading (строка 361, столбец 2)


VideoProm 08.07.2016 12:56

Вложений: 1
google chrome, посмотреть код элемента, console - верно? (потому что у меня только loading:81 пишет, скриншот прилагаю)

скажите где правильно смотреть

рони 08.07.2016 13:15

VideoProm,
Цитата:

Сообщение от рони
сначала грузится
jquery.min.js или jquery.js но только 1 на всю страницу
потом
jquery-migrate.min.js или jquery-migrate.js

потом все скрипты и плагины на jquery
затем
jquery-noconflict.js
далее
bootstrap.min.js
и скрипты bootstrap


рони 08.07.2016 13:18

VideoProm,
никаких jquery/1.8.3/ не должно быть если загрузили jquery/1.11.0/
и в строке 39 исправьте мусор

VideoProm 13.07.2016 20:20

Спасибо за советы, как результат я:

1. удалил лишний jquery-noconflict.js (остался 1)
2. при отключении /media/jui/js/bootstrap.min.js в документе bootstrap.php - вместо

JHtml::_('script', 'jui/bootstrap.min.js', false, true, false, false, $debug);

я прописал

JHtml::_('script', 'jui/bootstrap.min.js', false, false, false, false, $debug);

и подключении его ниже через index.html - перестают работать кнопки в админке (сайт работает) с ошибкой Uncaught TypeError: $(...).tooltip is not a function и ругается на эту строку:

$('*[rel=tooltip]').tooltip();

3. чтобы перенести jquery-noconflict.js ниже, и подключить через index.html я закомментировал в документе helix.php строку:

self::getInstance()->addJS( 'jquery-noconflict.js' );

отказало главное меню с ошибкой Uncaught ReferenceError: spnoConflict is not defined на эту строку:

spnoConflict(function($){

рони 13.07.2016 20:29

Цитата:

Сообщение от VideoProm
ошибкой Uncaught ReferenceError: spnoConflict

Цитата:

Сообщение от рони
и в строке 39 исправьте мусор

:-?

рони 13.07.2016 20:30

Цитата:

Сообщение от VideoProm
spnoConflict

замените на jQuery

VideoProm 14.07.2016 12:48

благодарю за внимание, по пункту №3

заменил spnoConflict на jQuery и появилась ошибка Uncaught ReferenceError: spnoConflict is not defined (anonymous function) со ссылкой на этот код в index.html

<script src="/templates/shaper_maxima/js/fixed-menu.js" type="text/javascript"></script>

вот сам код fixed-menu.js

jQuery(function($){
	$(window).on('scroll', function(){
		if( $(window).scrollTop()>205 ){
			$('#sp-menu-wrapper').addClass('menu-fixed');
		} else {
			$('#sp-menu-wrapper').removeClass('menu-fixed');
		}
	});

	$('.sp-main-menu-toggler').on('click', function(e){
		e.preventDefault();
	});

	$('.sp-main-menu-toggler').appendTo('#sp-menu');
	$('.sp-mobile-menu').appendTo('#menu');
});


меню на сайте не работает

p.s. убрал мусор в 39 строке, отказало главное меню (пробовал еще до переноса jquery-noconflict.js ниже)

этот мусор генерирует menu.php с кодом

<?php
/**
 * @package Helix Framework
 * @author JoomShaper [url]http://www.joomshaper.com[/url]
 * @copyright Copyright (c) 2010 - 2015 JoomShaper
 * @license [url]http://www.gnu.org/licenses/gpl-2.0.html[/url] GNU/GPLv2 or Later
*/
//no direct accees
defined ('_JEXEC') or die('resticted aceess');

class HelixFeatureMenu {

	private $helix;

	public function __construct($helix){
		$this->helix = $helix;
	}

	public function onHeader()
	{
		
		if ($this->helix->megaMenuType()=='drop') {
			$this->helix->addCSS('dropline.css');
			$this->helix->addJS('dropline.js');
		} elseif($this->helix->megaMenuType()=='split') {
			$this->helix->addCSS('dropline.css');
		} else {
			$this->helix->addJS('menu.js');
		}
		
		$this->helix->addCSS('mobile-menu.css');
		
	}

	public function onFooter()
	{

		ob_start();
		?>	

		<a class="hidden-desktop btn btn-inverse sp-main-menu-toggler" href="#" data-toggle="collapse" data-target=".nav-collapse">
			<i class="icon-align-justify"></i>
		</a>

		<div class="hidden-desktop sp-mobile-menu nav-collapse collapse">
			<?php
			$mobilemenu = $this->helix->loadMobileMenu();
			echo $mobilemenu->showMenu(); 
			?>   
		</div>
		<?php
		return ob_get_clean();
	}


	public function Position()
	{
		return 'menu';
	}


	public function onPosition()
	{        

		$menu = $this->helix->loadMegaMenu();

		if ($menu) {

			ob_start();
			?>	


			<div id="sp-main-menu" class="visible-desktop">
				<?php echo $menu->showMenu(); ?>        
			</div>  				
			<?php

			if (($this->helix->megaMenuType()=='split') && $menu->hasSub() || $this->helix->megaMenuType()=='drop') {
				if($this->helix->megaMenuType()=='drop'){
					$newclass = 'dropline empty ';
				} else{
					$newclass = 'split ';
				}

				echo '<div id="sublevel" class="' . $newclass . 'visible-desktop"><div class="container">';
				$menu->showMenu(1);
				echo '</div></div>';            
			}

			if (($this->helix->megaMenuType()=='split' && $menu->hasSub()) || $this->helix->megaMenuType()=='drop') {
				$sublevel=1;
			} else {
				$sublevel=0;
			}

			if (($this->helix->megaMenuType()=='split') && $menu->hasSub() || $this->helix->megaMenuType()=='drop') {  

				if($this->helix->megaMenuType()=='drop') {

					$this->helix->addInlineJS("spnoConflict(function($){

						function mainmenu() {
							$('#sp-main-menu').droplinemenu({
								sublevelContainer:$('#sublevel > div')
							});
				}

				mainmenu();

				$(window).on('resize',function(){
					mainmenu();
				});



				});");
				}



			} else {

				$this->helix->addInlineJS("spnoConflict(function($){

					function mainmenu() {
						$('.sp-menu').spmenu({
							startLevel: 0,
							direction: '" . $this->helix->direction() . "',
							initOffset: {
								x: ".$this->helix->Param('init_x',0).",
								y: ".$this->helix->Param('init_y',0)."
							},
							subOffset: {
								x: ".$this->helix->Param('sub_x',0).",
								y: ".$this->helix->Param('sub_y',0)."
							},
							center: ".$this->helix->Param('submenu_position',0)."
						});
			}

			mainmenu();

			$(window).on('resize',function(){
				mainmenu();
			});


			});");


			}




			return ob_get_clean();
		}
	}    
}

рони 14.07.2016 14:44

VideoProm,
с php не смогу помочь, нужен другой специалист.

VideoProm 14.07.2016 15:39

спасибо за совет, уже ищу php специалиста, но помогите пжлста по js, я следуя вашим советам заменил spnoConflict на jQuery и появилась ошибка Uncaught ReferenceError: spnoConflict is not defined (anonymous function) со ссылкой на этот код в index.html

<script src="/templates/shaper_maxima/js/fixed-menu.js" type="text/javascript"></script>

вот сам код fixed-menu.js

jQuery(function($){
	$(window).on('scroll', function(){
		if( $(window).scrollTop()>205 ){
			$('#sp-menu-wrapper').addClass('menu-fixed');
		} else {
			$('#sp-menu-wrapper').removeClass('menu-fixed');
		}
	});

	$('.sp-main-menu-toggler').on('click', function(e){
		e.preventDefault();
	});

	$('.sp-main-menu-toggler').appendTo('#sp-menu');
	$('.sp-mobile-menu').appendTo('#menu');
});

рони 14.07.2016 15:58

VideoProm,
строку 75 <script src="/plugins/system/helix/js/jquery-noconflict.js" type="text/javascript"></script> перенесите в строку 30
spnoConflict у вас формируется в 70 строке , а начинает использоваться в 37 !!!
сколько раз писать
Цитата:

Сообщение от рони
потом все скрипты и плагины на jquery
затем
jquery-noconflict.js
далее
bootstrap.min.js



Часовой пояс GMT +3, время: 12:59.