Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Kohana][lightbox] Błąd lightboxa
Forum PHP.pl > Forum > PHP > Frameworki
Max Damage
Cześć, mam problem w lightboxem wersja 2.04. Przede wszystkim nie wiem jak zrobić podział plików. W tej chwili mam katalog media a w nim foldery js i css, więc wrzuciłem do nich odpowiednio pliki. W kodzie pisze sobie:
  1. echo html::stylesheet('media/css/lightbox');
  2. echo html::script(array('media/js/przegladaj','media/js/lightbox','media/js/scriptaculous.js?load=effects,builder'));

Po czym firebug rzuca mi mi takim błędem:
Cytat
Object.extend is not a function
[Break on this error] }, window.LightboxOptions || {});\r\n

W ogóle nie wiem o co mu chodzi.
Według stronki lightboxa powinienem też dołączać plik prototype, ale jak to zrobię to wywala mi wszystkie skrypty na stronie (napisane w jquery jeśli to istotne).
Spotkał się ktoś wcześniej z czymś takim? A może użyć jakiś innych tego typu skryptów?
k_@_m_i_l
Prawdopodobnie to konflikt zmiennych w JavaScript, spowodowany tym, że zarówno jQuery i Prototype używają zmiennej $.
Dołącz najpierw jQuery i zrób tak :
Kod
var j = jQuery.noConflict();

i wszędzie w kodzie gdzie używałeś, $., pisz j.
i będzie po problemie.
Do jQuery są biblioteki "lightboxowe", wystarczy poszukać :
http://www.google.pl/search?source=ig&...p;oq=jquery+lig i nie ma problemu z konfliktem bibliotek.
Max Damage
Dzięki za wyjaśnienie i linka. Użyłem biblioteki - plugina (balupton edition).
Mam co prawda nadal problem, obrazki mam bowiem dodawane dynamicznie do strony po kliknięciu w przycisk, i dla nich już ten lightbox nie działa, mimo że dodałem atrybut class i poprawiłem rel na takie jak daje ten plugin....
k_@_m_i_l
Te obrazki ładujesz AJAX-em na stronę ?
Pokombinuj z metodą live
http://docs.jquery.com/Events/live#typefn
Max Damage
Nie używałem jeszcze ajaxa w jquery. Trochę teraz z tym kombinowałem, z metodą live także, ale nic mi nie wychodzi. Musi być przez ajaxa ? Teraz obrazki dodaję tak:
[JAVASCRIPT] pobierz, plaintext
  1. $("<a>").attr({
  2. rel:"lightbox-enabled",
  3. href:'http://localhost/'+duze_obrazki[index]
  4. }).addClass("lightbox-enabled")
  5. .html(
  6. $("<img>").attr({src:'http://localhost/'+ilosc_plikow[index]})
  7. .addClass("obrazek_galeria")
  8. ).appendTo("#wewnetrzny");
[JAVASCRIPT] pobierz, plaintext

gdzie duże_obrazki i ilosc_plikow to tablice ze ścieżkami do wszystkich obrazków.
k_@_m_i_l
To się troche nie zrozumieliśmy:)
Wytłumacz co rozumiesz przez to :
Cytat
Mam co prawda nadal problem, obrazki mam bowiem dodawane dynamicznie do strony po kliknięciu w przycisk


W jaki sposób ładujesz te obrazki ?
One są wczytywane normalnie podczas ładowania strony, czy wczytujesz przez js jakąś inną strone?
Napisz to dokładniej, albo podeślij jakiś kod.
Max Damage
Dobra, więc po kolei:
Napisałem sobie taki pasek miniaturek zdjęć, mam na stronie różne kategorie, więc patrzę czy w danej kategorii są jakieś zdjęcia, jak tak to pobieram ścieżki funkcją glob do wszystkich tych obrazków i przekazuję do funkcji javascriptu. Następnie tam wczytuję kilka zdjęć - a dokładniej tyle ile może być widocznych na stronie. Wczytywanie wszystkich od razu jest bez sensu, każde kolejne zdjęcie wczytuje się po naciśnięciu przycisku który przesuwa obrazki w lewo. A poprzez wczytywanie obrazków rozumiem kod który wcześniej podałem, i który daje np. coś takiego:
  1. <a class="lightbox-enabled" rel="lightbox-enabled" href="http://localhost/media/img/galeria_max/Alfa_Romeo/Spider/Spider+1.jpg">
  2. <img class="obrazek_galeria" src="http://localhost/media/img/galeria_min/Alfa_Romeo/Spider/Spider+1.jpg"/>
  3. </a>

Jak kliknę w dodaną miniaturkę, pojawia mi się jej odpowiednik, ale nie w lightboxie tylko jako zwykła strona.
Nie wiem jak to jest napisane w wersji 2 lightboxa, a właściwie w tym pluginie, ale w pierwszej wersji w funkcji initLightbox było coś takiego:
[JAVASCRIPT] pobierz, plaintext
  1. if (anchor.getAttribute("href") && (anchor.getAttribute("rel") == "lightbox")){
  2. anchor.onclick = function () { showLightbox(this); return false;}
  3. }
[JAVASCRIPT] pobierz, plaintext

Co sprawiało że nie wyświetlał zdjęcia na nowej stronie, i pewnie tego mi brakuje przy dodawanych zdjęciach. Wiesz jak to rozwiązać? Mogę być też inne propozycje - aby tylko działało.

EDIT:
Dobra, uporałem się. Przy tworzeniu linka do obrazka dodałem jeszcze to i teraz działa:
[JAVASCRIPT] pobierz, plaintext
  1. .click(function(){ $.Lightbox.init(this); $.Lightbox.start();return false; })
[JAVASCRIPT] pobierz, plaintext
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.