Magento - Javascripte v navzkrižu ena z drugo

Na naslovnico spletne trgovine, ki jo trenutno izdelujem, http://makspro.eliteplaying.com/index.php/ sem dodal JS skripto za rotacijo bannerjev (to je ta na vrhu content dela).

Ta skripta za delovanje potrebuje naslednji dve vrstici:

<script type="text/javascript" src="http://makspro.eliteplaying.com/banners/js/jquery.js"></script>
  <script type="text/javascript" src="http://makspro.eliteplaying.com/banners/js/scripts.js"></script>

Problem pa je, ker se ta JS skripta tepe z ostalimi JS skriptami magento prednastavljenimi skriptami. Sedaj sem nastavil tako, da doda zgornji dve vrstici za aktivacijo in zagon JSja samo na index.php strani, ostale podstrani teh skript nimajo in vse deluje tako kot mora.

Recimo na tej podstrani http://makspro.eliteplaying.com/index.php/bela-tehnika.html lahko v tem velikem search baru na modrem pašku zasledite, da prikaže znotraj napis "Iskanje po celotni trgovini..." potem "Računalništvo" gumb v vodoravnem menuju ima drop down še ostalih podkategorij,.... To pa vse zato, ker so za te stvari nastavljenej javaskript skripte. Na prvi strani pa zgoraj naštete stvari NE delujejo.

Predvidevam, da so .js skripte v navzkrižu ena z drugo. Kaj lahko kaj naredim na hitro za to porpvaiti ali mislite, da so kakšne klase ali kaj podobnega znotraj skripte od bannerja ki so enake z ostalimi JS skriptami?

Da rotacija banerjev deluje samo na prvi strani sem dodal v app/design/frontend/default/handbags/template/page/html/head.phtml

<?php
$uri = $_SERVER['REQUEST_URI'];
if ($uri == "/" || $uri == "/index.php/" || $uri == "/index.php" ) {

echo '
  <script type="text/javascript" src="http://makspro.eliteplaying.com/banners/js/jquery.js"></script>
  <script type="text/javascript" src="http://makspro.eliteplaying.com/banners/js/scripts.js"></script>';

  } else {
}
?>

15 odgovorov

Moderatorjem se opravičujem, ponesreči na mesto v temo "Programiranje" dal v tole. Če je laho kateri moderator tako prijazen in temo prestavi v "Programiranje".

blindek:
Predvidevam, da so .js skripte v navzkrižu ena z drugo. Kaj lahko kaj naredim na hitro za to porpvaiti ali mislite, da so kakšne klase ali kaj podobnega znotraj skripte od bannerja ki so enake z ostalimi JS skriptami?

Poskusaj klicati namesto znaka "#" za Jquery kar takole "jQuery"

To misliš v html kodi ali kje? Namreč samo na enem mestu kliče z "#" to je na gumbih "1" , "2" , "3" za ročno rotacijo bannerjev. Ostale skripte pa ne.

Problem ni pri bannerjih ampak pri ostalih magento skriptah. Banner JS skripta dela, ostale ne delajo od magenta. Namreč izgleda da banner je močnejši in povozi ostale JS skripte.

Tocno tam, s tem klices jQuery, ampak se zelo verjetno tepe s ostalimi. Poskusi kot sem ti napisal.

Za jQuery dodaj, Jquery.noconflict(); (neki takega), v http://makspro.eliteplaying.com/banners/js/scripts.js pa naredi replace('$(', 'jQuery(', $javascriptKoda); in je problem rešen.

V http://makspro.eliteplaying.com/index.php/
Sem tam pri gumbih "1" "2" "3" sedaj # zamenjal z "jQuery" se pravi so linki takole "http://makspro.eliteplaying.com/index.php/jQuery" skripta se ni pokvarila oziroma banner rotacija še zmeraj deluje, samo ostale skripte pa še ne.

Sem upošteval tudi Roky-jev nasvet in v http://makspro.eliteplaying.com/banners/js/jquery.js zamenjal vse jQuery z javascriptKoda ampak tudi to še ni odpravilo.

@Roky edino tega mi ne uspe oziroma ne razumem kako Jquery.noconflict(); ? A to da dodam tam kjer je bil prej "#" in je sedaj "jQuery" ali kako?

@blindek, poglej si http://zazivali.si/js/jquery/jquery.js, čist zadnjo vrstico.

V obe skripti sem na konec dodal jQuery.noConflict(); ali stvar še vedno ne deluje.

http://makspro.eliteplaying.com/banners/js/jquery.js
http://makspro.eliteplaying.com/banners/js/scripts.js

Mogoče še kakšna ideja kaj bi lahko še bilo narobe in je potrebno spremeniti?

Jaz sem dodal:
var $j = jQuery.noConflict();

na koncu jquery kode. potem namesto $(); uporabljaš $j();

Jao sej ti je Roky že napisal, da zamenjaj $. znak v scripts.js za jQuery. , ampak ne kar povprek.