Sziasztok,
sajnos egy elég érdekes hibába szaladtam bele, amivel nagyon nem boldogulok.
A történet, ami ide vezetett az így hangzik:
Van egy téma amit használok az oldalon és egyénire szabtam. A téma úgy épül fel, hogy van egy page-front-tpl.php állomány ami az első oldalt definiálja, az különbözik az összes többitől. Itt van egy régió, egy "fejléc" ami nagyobb mint a többi oldalon. Az alapból ebben a régióban egy kép van definiálva, de én átalakítottam úgy, hogy egy jquery script váltogasson 3 képet slider effektussal.
Van egy virtuális gépem, linux fut rajta és ott van az oldal tükörképe, hogy ilyen dolgokat tudja fejleszteni biztonságosan. A teszt szerveren sikerült megcsinálni, jól működik.
Amikor kiélesíttettem az oldalra, ott már nem működik valamiért, pedig minden ugyan az. Az egyik függvényre azt mondja, hogy nem létezik (FireBug-gal megnéztem) és nem váltogatja a képeket.
A php részlet így néz ki (ami egyébként html...):
<!--Slider Header--> <div id="preface-wrapper" class="clearfix"> <div id="preface" class="clearfix" > <div id="h_js"> <script type="text/javascript" src="misc/js/h_slider/jquery-1.3.1.min.js"></script> <script type="text/javascript" src="misc/js/h_slider/jquery.scrollTo.js"></script> <script type="text/javascript" src="misc/js/h_slider/header_slider.js"></script> <div id="debug"></div> <div id="slider"> <div id="mask-gallery"> <ul id="gallery"> <li><img src="misc/js/h_slider/1.png" width="960" height="425" alt="" /></li> <li><img src="misc/js/h_slider/2.png" width="960" height="425" alt="" /></li> <li><img src="misc/js/h_slider/3.png" width="960" height="425" alt="" /></li> </ul> </div> <div id="mask-excerpt"> <div id="preface-sidebar" class="clearfix"> <?php print $preface_sidebar; ?> <div id="excerpt"></div> </div> </div> </div> </div> </div> </div> <!-- END Slider Header -->
A scripteket látja, eléri leellenőriztem.
Ezt a hibát írja a FireBug:
$("#mask-gallery").scrollTo is not a function
De a teszt oldalon meg létja hogy függvény.
Az oldal címe: http://had.co.hu
Nem kommenteztem ki a hibás részt...
Van valakinek ötlete?
Előre is köszönöm
Nézd meg a teljes oldal forrását
Csak egy sort emelek át belőle:
Ezek után nem csodálkozom semmin. Illetve csak azon, hogy a teszt oldalon (aminek tán csak nem 1.1.1.{2,3,4} az IP-je? ;) ) egyáltalán működött.
Nekem nem ilyen
Szia,
nekem egyáltalán nem ilyen az oldal forrása, nincs benne IP... Én simán Firefoxal megnézem az oldal forrását, és amit te beillesztettél az nálam így néz ki:
A szkript forrása megnyílik ha az útvonalat beírom a böngészőbe, tehát elérhető....
tobb hiba is van benne
egyreszt ilyet nem irunk _soha_ egyik .tpl.php -ba se, hogy "script src=ezmegaz". ilyet nem csinalunk. a nekunk kello jseket vagy a sminkunk .info filejaban adjuk a drupal tudtara vagy ha feltetelesen akarunk scripteket elhelyezni akkor a megfelelo helyen a drupal_add_js api fuggveny segitsegevel tesszuk ezt.
a masik, hogy a jquery a drupal core resze, nem szukseges (artalmas?) ilyen barbar modon megegy jquery peldanyt beleeroszakolni az oldalba.
feltuno meg, hogy ez az utvonal "misc/js/h_slider/" nem stimmel vagy nem stimmel az eles szerver-kornyezetben. ez a "misc" mappa a drupal gyoker konyvtaraban van vagy a sminked konyvtaraban vagy hol?
ha drupal gyokerben van, az rossz otlet egyreszt, masreszt valoszinuleg "/misc/js/h_slider/" -kent kene megadnod hogy egyatalan mukodjon.
ha sminked konyvtaraban van, akkor pedig nem stimmel ez az eleres.
akarhogy is, az elejen elhangzott a lenyeg, ilyen modon nem eroszakolunk jseket egy drupal oldalba. ennek van "drupalish" modja, erdemes elsajatitani a kesobbi naaaaaagy keveredesek elkerulese celjabul.
-
clear: both;
Köszi az infót, de elakadtam
Áttanulmányoztam a hozzászólásokat és a következőt tettem:
kiszedtem azt a drótozott script hívást és beletettem a theme.info fájlomba a scriptet, de így nem működött....
Utána megpróbáltam így meghívni a page-front.tpl.php fájlban a scriptet:
és így is
de sajnos ez sem működik.... :S
Mit rontok el?
nem mukodik, nem mukodik
Mi nem mukodik ?
A JS nem kerul be html kodba?
A JS rossz utvonallal kerul be a html-be?
stb, stb, stb
A smink ugykodes utan a kotelezo theme registry torles megvolt?
---
http://drupalaton.hu
Belekerül, helyes útvonallal
Szia,
belekerül a html-be, helyes útvonallal.
Viszont a képeket nem "mozgatja" a script. A téma nyitó hozzászólásomban leírtak szerint, csak annyi a különbség, hogy most a firebug nem írja ki a hibát...tulajdonképpen nem történik semmi...
template.php-ba tedd a
template.php-ba tedd a tpl-ekben már késő a dolog, hisz ott van egy script változó amibe nem fog ez belekerülni.
pp
Palócz István
https://palocz.hu | https://tanarurkerem.hu
a page.tpl.php -ban már későn hívod..
ott már kiíratásra kerül a $scripts, ami a korábbi drupal_add_js hívásokból áll össze. korábban kell hívnod, legkésőbb egy template_preprocess_page -ben. vagy mondjuk ha modulod adja ezt a funkcionalitást, akkor jellemzően hook_init -ben.
amikor a sminked .info filejához hozzáadtad a scriptedet, akkor pedig biztos elfelejtetted űríteni a theme registry -t azért nem működött.
-
clear: both;
Beletettem, űrítettem a registry-t
Beletettem a template.php -ba így:
Beletettem a theme.info file-ba így:
Viszont nem történik semmi...
Az oldal forrásában benne van a header slider. Viszont nem mozgatja a script a html elemeket.
Még mindig rosszul akarom meghívni?
Az a fura, hogy a tesztoldalon a csúnya faragással ment (ahogy korábban írtam) itt meg sehogy se....
ha belekerült, akkor itt nincs hiba
a .js fileban nem stimmel valami azért nem mozgat. vagy mi ez a header_slider.js? te írtad ezt? megmutatod? vagy ez csak a slider "plugin"? az magától miért mozgatna? mégegy jst kell hozzáadnod, amit te írsz és a slider pluginra épít.
-
clear: both;
header_slider.js
Nem én írtam, csak használom :)
a js:
A HTML elemek amiket kellene mozgasson:
A teszten ugyan ez a szkript, ugyan ezeket az elemeket mozgatja :S
szerintem nemigen olvastad el a dolgokat amiket linkeltem
ilyen nincs. drupal modja van ennek. drupal modon csinaljad.
amugy nekem eleg kusza ez a js is...
plusz ha egy slideshow -t akarsz, akkor arra van tobb modul is ami views -al integralodik es ilyen-olyan slideshowkat lehet vele "klikk-klikk-kesz" modszerrel letrehozni. konnyeden.
-
clear: both;
Értem
Értem...
Hát ezt kezd never ending story lenni ebben a formában :)
Viszont nagyon sok hasznosat tudtam meg....
1. itt nem lehet csak ugy bele tenni aztán kész...végül is CMS, nem csak egy oldal...
2. nem érdemes csak ugy belevágni egy ilyen fejlesztésbe
Igazából azért lett így beletéve, mert az a hely, ahová akarom rakni nem egy blokk, amit tudok változtatgatni, bele van égetve a témába...
Köszönöm mindenkinek a tanácsát.
Mégis csak van valami baj....
Kivettem amit mondtál...
Elvileg most már drupalos (ha mégse akkor...sorry)
Most megint írja a hibát a firebug, méghozzá ugyan azt mint a legelső csúnya drótozásomnál.
Pedig most már csak egyszer van header_slide.js, benne a .info file-ban, meg van hívva a preprocess ben
drupal_add_js()
fügvénnyel, és nincs benne a$(document).ready(function() {
se...Addig rendben, hogy kiszeded,
Addig rendben, hogy kiszeded, de be kell még tenni helyette valami mást is :)
Mondjuk:
Drupal.behaviors.sliderBehavior = function (context) {
Egyébként a $(document).ready kb maradhatott is volna nem ez okozza azt, hogy nincs ScrollTo függvénye a jQuery objektumnak. Nem lehet, hogy hiányzik valami?
http://plugins.jquery.com/project/ScrollTo
a ScrollTo.js hova tűnt?
pp
Palócz István
https://palocz.hu | https://tanarurkerem.hu
Beleteszem :)
Beleteszem és kipróbálom.
Viszont arra gondoltam, hogy áttanulmányozom azt a verziót, hogy egy modulba megcsinálom ezt az egészet. Találtam egy leírást ami alapján ezt tényleg Drupalosan meg lehet csinálni...
Mi a véleményetek erről a megoldásról?
biztos jó :D Egy linket azért
biztos jó :D
Egy linket azért adhatnál rá.
pp
Palócz István
https://palocz.hu | https://tanarurkerem.hu
Beletettem a scrollto-t
Beletettem a scrollto.js-t és meghívtam a preprocess-ben, de nem látja...
Így hívtam meg:
És továbbra sem látja a függvényt.
A scrollto.js a téma mappájában van, ugyan úgy mint a header_slider.js....
Ez a sor csak egyszer kell?:
nem lehet, hogy a sorrend
nem lehet, hogy a sorrend rossz?
pp
Palócz István
https://palocz.hu | https://tanarurkerem.hu
Fordítva sem lett jobb....
Felcseréltem a hívásokat (nekem nem ugy lenne logikus) és így sem látja azt a függvény :(
Jónak kellene lennie. Biztos
Jónak kellene lennie. Biztos lefut ez a fgv? Theme registry rebuild megvolt?
Megvolt
Megvolt a rebuild minden módosítás után és eljut a függvényig, de nem fut le mert hibával elszáll:
Megtudjuk nezni
Ki tudod tenni valahova az oldalt, hogy a hozza ertok ra tudjanak nezni ?
Hatha elobb meglesz a hiba oka.
---
http://drupalaton.hu
Ez javascriptes hibaüzenet,
Ez javascriptes hibaüzenet, nincs köze ahhoz, hogy a HTML kódban importálva lett-e a kívánt .js fájl, vagy sem.
Részben jogos
Ezek az IP-k úgy tűnik, a számomra új mobilnet származékai. Bocs.
Mindazáltal akkor is... khm... érdekes, ahogy összeáll az a HTML - de ezt aboros már leírta.
minek ide a jquery
minek ide a jquery 1.3.1?
Olvasd el figyelmesen aboros hozzászólását! Annyit fűznék még hozzá, hogy a scrollto kiegészítő megy 1.2.6-os jquery-vel tehát teljesen felesleges az 1.3.1 verziójú jquery-t beleerőltetned a html-be. Egyszerűen hagyd ki.
A másik, hogy most kétszer is benne van a forrásban a .js ami nem egészséges. (a jquery 3x)
pp
Palócz István
https://palocz.hu | https://tanarurkerem.hu