Search code examples
javascriptjqueryajaxmagnific-popup

MagicPopup dynamic Gallery conditionnal


My problem may sound easy to solve but I'm stucked...

I'm using jQuery and Magnific Popup to create a dynamic gallery.

But not all gallery have six picture some may have one ou just four or five.

So here's what I did and for some reasons it just doesn't work... If someone can help me out... I'd be greatfull

var magic1;
var magic2;
var magic3;
var magic4;
var magic5;
var magic6;

if (post.photo1 != "") {
    var magic1 = '{ src: "http://linkto/img/'+post.photo1+'}'
} else {
    var magic1 = ""
}

if (post.photo2 != "") {
    var magic2 = '{ src: "http://linkto/img/'+post.photo2+'}'
} else {
    var magic2 = ""
}

if (post.photo3 != "") {
    var magic3 = '{ src: "http://linkto/img/'+post.photo3+'}'
} else {
    var magic3 = ""
}

if(post.photo4 != ""){
var magic4 ='{ src: "http://linkto/img/'+post.photo4+'}'
} else {
    var magic4 = ""
}

if (post.photo5 != "") {
    var magic5 = '{ src: "http://linkto/img/'+post.photo5+'}'
} else {
    var magic5 = ""
}

if (post.photo6 != "") {
    var magic6 = '{ src: "http://linkto/img/'+post.photo6+'}'
} else {
    var magic6 = ""
}

$('#fading-slider' + post.ID).magnificPopup({
    items: [
        magic1 + ',' +
        magic2 + ',' +
        magic3 + ',' +
        magic4 + ',' +
        magic5 + ',' +
        magic6
    ],
    gallery: {
      enabled: true
    },
    type: 'image' // this is default type
});

Solution

  • First, you declare var twice so, You can try some thing like this:

     var imgs = new Array();
     if(post.photo1 != "")
       imgs.push({'src': 'http://linkto/img/'+post.photo1});
     if(post.photo2 != "")
       imgs.push({'src': 'http://linkto/img/'+post.photo2});
    
      ....
      ....
      $('#fading-slider' + post.ID).magnificPopup({
        items: imgs ,
        gallery: {
          enabled: true
        },
        type: 'image' // this is default type
      });