Witam
Od dwóch dni walczę z implementacją fancybox'a na stronie postawionej w drupalu.Niestety to nie ja robiłem stronę a do programisty który tworzył ją nie mma kontaktu. Problem polega na tym że nie mogę za chiny ludowe obsłużyć obsługi kilku zdjęć w fancyboxie tak by pojawiły się strzałki nawigacyjne.
po stronie php wygląda to tak:
<div id="gallery_window"> alt=""
src="<?php echo thumbnail_src($photos[0]['mini'], 450, 320, FasThumbnail::MODE_CENTER) ?>"
class="userImg"
width="450"
height="320"
/>
<?php foreach ($photos as $id => $photo): ?>
<a class="galeria" href="<?php echo $photo['large'] ?>" rel="fancybox">
</a> <?php endforeach; ?>
Problem w tym że kod galerii został tak napisany że kliknięcie na któryś z linków ma nie wywoływać odrazu fancyboxa tylko powiększyć zdjęcie w innym divie a dopiero kliknięcie w to powiększone zdjęcie powinno wywołać fanbcyboxa już całą galerią. Udało mi się do tego momentu spowodować ze fancybox ładnie się ukazuje ale jako pojedyncze zdjęcie bez możliwości nawigowania. Po stronie js wygląda to tak:
function myGallery($gal){
var self = this;
this.$main = $gal;
this.$galLine = this.$main.find('#galery_line');
this.number = 0;
//przewijanie galerii
this.$galLine.find('.leftButton').click(function(e){e.preventDefault();self.showPrevRow() });
this.$galLine.find('.rightButton').click(function(e){e.preventDefault();self.showNextRow() });
//obsługa powiększenia
this.$main.find('#hiddenList a').fancybox();
this.$main.find('#gallery_window').click(function(e){e.preventDefault(); self.CBgallery();});
//obsługa midi
this.$galLine.find('.images li').click(function(e){e.preventDefault(); self.showMidi( $(this) ); return false;});
//metody klasy
this.CBgallery = function()
{
// var $gallery = $('#galery_line .images li a').colorbox({
// rel:'colorbox',
// //onClosed: function(){$.colorbox.remove()}
// });
//console.log(this.number);
this.$main.find('#hiddenList a').eq(this.number).click(); // do a click event on the gallery to open Cbox
}
this.showMidi = function( $li )
{
var midi = $li.find('img').first().attr('midi') ;
//dodać preloading??
this.$main.find('#gallery_window img').attr('src', midi);
// licznik
this.number = $li.prevAll().length ;
this.$main.find('#imagesCount').html(this.number +1);
}
this.currentRow = function()
{
var row = this.$galLine.find('li:visible').first().attr("class");
row = parseInt(row.replace('row_',''));
return row;
}
this.showNextRow = function()
{
var currentRow = this.currentRow()
var nextRow = currentRow + 1;
var klasa = '.row_'+(nextRow);
if( this.$main.find('li'+klasa).length > 0)
{
this.$main
.find('li').hide();
this.$main
.find(klasa).show();
}
}
this.showPrevRow = function()
{
var currentRow = this.currentRow()
if( currentRow > 1)
{
var prevRow = currentRow - 1;
var klasa = '.row_'+prevRow;
this.$main
.find('li').hide();
this.$main
.find(klasa).show();
}
}
}
Jeszcze jedno warto nadmienić że nie jestem w stanie w pliku js ustawić parametrów dla metody fancybox. Co bym nei zmienił w parametrach to i tak zawsze przyjmuje domyślne ustawienia z pliku jquery.fancybox.js
Będę ogromnie wdzięczny za jakaś pomoc
Problem rozwiązany należało użyć innej opcji grupowania zdjęć
Ten post edytował Wilu88 26.09.2017, 21:29:52