97 lines
4.0 KiB
JavaScript
97 lines
4.0 KiB
JavaScript
var $j = jQuery.noConflict(),
|
|
$window = $j( window );
|
|
|
|
$window.on( 'load', function() {
|
|
"use strict";
|
|
// Variable image product
|
|
oceanwpWooVariableImage();
|
|
} );
|
|
|
|
/* ==============================================
|
|
WOOCOMMERCE VARIABLE IMAGE PRODUCT
|
|
============================================== */
|
|
function oceanwpWooVariableImage() {
|
|
"use strict"
|
|
|
|
/**
|
|
* Stores a default attribute for an element so it can be reset later
|
|
*/
|
|
$j.fn.wc_set_variation_attr = function( attr, value ) {
|
|
if ( undefined === this.attr( 'data-o_' + attr ) ) {
|
|
this.attr( 'data-o_' + attr, ( ! this.attr( attr ) ) ? '' : this.attr( attr ) );
|
|
}
|
|
this.attr( attr, value );
|
|
};
|
|
|
|
/**
|
|
* Reset a default attribute for an element so it can be reset later
|
|
*/
|
|
$j.fn.wc_reset_variation_attr = function( attr ) {
|
|
if ( undefined !== this.attr( 'data-o_' + attr ) ) {
|
|
this.attr( attr, this.attr( 'data-o_' + attr ) );
|
|
}
|
|
};
|
|
|
|
/**
|
|
* Sets product images for the chosen variation
|
|
*/
|
|
$j.fn.wc_variations_image_update = function( variation ) {
|
|
var $form = this,
|
|
$product = $form.closest( '.product' ),
|
|
$product_gallery = $product.find( '.images' ),
|
|
$product_img = $product.find( 'div.images .main-images img:eq(0), div.images .main-images img:eq(1), div.images .product-thumbnails .first-thumbnail:not(.slick-cloned) img' ),
|
|
$product_link = $product.find( 'div.images a.woocommerce-main-image:eq(0), div.images a.woocommerce-main-image:eq(1), div.images a.oceanwp-lightbox-trigger:eq(0), div.images a.oceanwp-lightbox-trigger:eq(1), div.images .first-thumbnail:not(.slick-cloned) a.woo-thumbnail:eq(3)' );
|
|
|
|
if ( variation && variation.image && variation.image.src && variation.image.src.length > 1 ) {
|
|
// Image attrs
|
|
$product_img.wc_set_variation_attr( 'src', variation.image.src );
|
|
$product_img.wc_set_variation_attr( 'height', variation.image.src_h );
|
|
$product_img.wc_set_variation_attr( 'width', variation.image.src_w );
|
|
$product_img.wc_set_variation_attr( 'srcset', variation.image.srcset );
|
|
$product_img.wc_set_variation_attr( 'sizes', variation.image.sizes );
|
|
$product_img.wc_set_variation_attr( 'title', variation.image.title );
|
|
$product_img.wc_set_variation_attr( 'alt', variation.image.alt );
|
|
$product_img.wc_set_variation_attr( 'data-src', variation.image.full_src );
|
|
$product_img.wc_set_variation_attr( 'data-large_image', variation.image.full_src );
|
|
$product_img.wc_set_variation_attr( 'data-large_image_width', variation.image.full_src_w );
|
|
$product_img.wc_set_variation_attr( 'data-large_image_height', variation.image.full_src_h );
|
|
$product_link.wc_set_variation_attr( 'href', variation.image.full_src );
|
|
$product_link.wc_set_variation_attr( 'title', variation.image.title );
|
|
} else {
|
|
// Reset image attrs
|
|
$product_img.wc_reset_variation_attr( 'src' );
|
|
$product_img.wc_reset_variation_attr( 'width' );
|
|
$product_img.wc_reset_variation_attr( 'height' );
|
|
$product_img.wc_reset_variation_attr( 'srcset' );
|
|
$product_img.wc_reset_variation_attr( 'sizes' );
|
|
$product_img.wc_reset_variation_attr( 'title' );
|
|
$product_img.wc_reset_variation_attr( 'alt' );
|
|
$product_img.wc_reset_variation_attr( 'data-src' );
|
|
$product_img.wc_reset_variation_attr( 'data-large_image' );
|
|
$product_img.wc_reset_variation_attr( 'data-large_image_width' );
|
|
$product_img.wc_reset_variation_attr( 'data-large_image_height' );
|
|
$product_link.wc_reset_variation_attr( 'href' );
|
|
$product_link.wc_reset_variation_attr( 'title' );
|
|
}
|
|
|
|
window.setTimeout( function() {
|
|
$product_gallery.trigger( 'woocommerce_gallery_init_zoom' );
|
|
|
|
// Refresh slide
|
|
if ( $j( 'body' ).hasClass( 'single-product' ) ) {
|
|
$j( '.product .main-images, .product .product-thumbnails' ).slick( 'refresh' );
|
|
|
|
// Refresh lightbox
|
|
if ( ! $j( 'body' ).hasClass( 'no-lightbox' ) ) {
|
|
$j( '.product-images-slider' ).removeData( 'chocolat' ).Chocolat( {
|
|
loop : true,
|
|
imageSelector : '.product-image:not(.slick-cloned) .woo-lightbox'
|
|
} );
|
|
}
|
|
}
|
|
|
|
$j( window ).trigger( 'resize' );
|
|
}, 10 );
|
|
};
|
|
|
|
} |