رفتن به مطلب

تداخل ووکامرس با قالب


پست های پیشنهاد شده

سلام، چند وقتی هست که سایتم رو افتتاح کردم و وقتی که افزونه ووکامرس رو نصب و فعال کردم؛ برخی مشکلات در سایت من به وجود آمده ( باز نشدن منو در گوشی، استیکی نبودن هدر و دسکتاپ و گوشی، مشکل لودر خود قالب و نشون ندادن تصویر شاخص نوشته ها در وبلاگ و ...)، مشکل رو به خود پشتیبانی قالب گفتم ولی گفت که ما نمی دونیم. یکی از دوستای من گفت که احتمالا مشکل از فایل theme-woo.js تو قالب است که این مشکل ها رو به وجود آورده.
منم سعی کردم که تستش کنم و با ارور Uncaught ReferenceError: jQuery is not defined مواجه شدم.
کل کد رو براتون قرار دادم.

لطفا کمکم کنید
واقعا مهم هست!

خیلی ممنون
 

https://pastebin.pl/view/3d6d4ab6

 

Opera Snapshot_2020-09-18_173838_codepen.io.png

لینک به ارسال
در 2 ساعت قبل، ashkanhasebi گفته است :

سلام، چند وقتی هست که سایتم رو افتتاح کردم و وقتی که افزونه ووکامرس رو نصب و فعال کردم؛ برخی مشکلات در سایت من به وجود آمده ( باز نشدن منو در گوشی، استیکی نبودن هدر و دسکتاپ و گوشی، مشکل لودر خود قالب و نشون ندادن تصویر شاخص نوشته ها در وبلاگ و ...)، مشکل رو به خود پشتیبانی قالب گفتم ولی گفت که ما نمی دونیم. یکی از دوستای من گفت که احتمالا مشکل از فایل theme-woo.js تو قالب است که این مشکل ها رو به وجود آورده.
منم سعی کردم که تستش کنم و با ارور Uncaught ReferenceError: jQuery is not defined مواجه شدم.
کل کد رو براتون قرار دادم.

لطفا کمکم کنید
واقعا مهم هست!

خیلی ممنون
 


jQuery(document).ready(function($) {
	gt3_animate_cart ();
	gt3_spinner_up_down ();
	gt3_size_guide ();
	gt3_comment_label();
	gt3_category_accordion();
    woocommerce_triger_lightbox();
    gt3_replace_product_gallery_trigger();
    gt3_sticky_thumb();
    gt3_login_register();
    gt3_infinite_scroll();
});

jQuery(window).load(function($) {
	if (jQuery(".gt3-animation-wrapper.gt3-anim-product").length) {
        gt3_scroll_animation('.gt3-animation-wrapper.gt3-anim-product', false);
	}
    gt3_product_single_carousel();
});

jQuery(window).resize(function($){

});

function viewport() {
    /* http://andylangton.co.uk/articles/javascript/get-viewport-size-javascript/ */
    var e = window, a = 'inner';
    if (!('innerWidth' in window)) {
        a = 'client';
        e = document.documentElement || document.body;
    }
    return {width: e[a + 'Width'], height: e[a + 'Height']};
}

jQuery( document ).ajaxComplete(function() {
	var select = jQuery('#yith-quick-view-modal .variations select');
	if (select.length) {
		select.on('change', function(){
			var thumbnails = jQuery('#yith-quick-view-modal .gt3-thumbnails-control');
			var selectEmpty = true;

			select.each(function(){
			    var easyzoom = jQuery("#yith-quick-view-content .woocommerce-product-gallery__image").easyZoom();
				var api = easyzoom.data('easyZoom');
				api.teardown();
				api._init();

				if ( this.value !== '') {
					selectEmpty = false;
				}
			});

			if ( selectEmpty ) {
				thumbnails.css({'height':'auto'});
			} else {
				thumbnails.find('.gt3-thumb-control-item:first').trigger( "click" );
				thumbnails.css({'height':'0'});
			}
		})
	}
});

function gt3_sticky_thumb() {
    var window_width = viewport().width,
        gt3_sticky_thumb = jQuery('.gt3_sticky_thumb'),
        gt3_thumb_sticky_thumb_vertical = jQuery('.gt3_thumb_sticky_thumb_vertical');

    if (gt3_sticky_thumb.length) {
        if (window_width < 768) {
            gt3_sticky_thumb.trigger("sticky_kit:detach");
        } else {
            gt3_sticky_thumb.stick_in_parent();
        }
    }

    if (gt3_thumb_sticky_thumb_vertical.length) {
        if (window_width < 768) {
            gt3_thumb_sticky_thumb_vertical.find('.gt3-single-content-wrapper').trigger("sticky_kit:detach");
        } else {
            gt3_thumb_sticky_thumb_vertical.find('.gt3-single-content-wrapper').stick_in_parent();
        }
    }
}

function gt3_product_single_carousel() {
    var $wrap_vert_thumb = jQuery('.gt3_thumb_vertical'),
        $wrap_vert_thumb_flex = jQuery('.gt3_thumb_vertical.gt3_carousel_thumb');
    if ($wrap_vert_thumb_flex.length) {
        var $gallery_height = $wrap_vert_thumb_flex.find('.woocommerce-product-gallery__wrapper').height();
        var $control_wrap = $wrap_vert_thumb_flex.find('.flex-control-nav.flex-control-thumbs');
        var $control_thumb = $wrap_vert_thumb_flex.find('.flex-control-nav.flex-control-thumbs > li');
        var $max_thumb = Math.round($gallery_height / $control_thumb.outerHeight());
        var $control_height = $control_thumb.height() + $control_thumb.outerHeight() * ($max_thumb - 1);

        var window_width = viewport().width;
        if (window_width < 768) {
            $wrap_vert_thumb_flex.find('.flex-control-nav.flex-control-thumbs > li').removeClass('point');
            return;
        }
        $control_wrap.css({'height': $control_height});

        if ($control_thumb.length > $max_thumb) {
            if (!$wrap_vert_thumb_flex.find('.gt3_control_wrapper').length) {
                $control_wrap.wrap('<div class="gt3_control_wrapper"></div>').before('<span class="gt3_control_prev"></span>').after('<span class="gt3_control_next"></span>');
            }
            $control_wrap = $wrap_vert_thumb_flex.find('.flex-control-nav.flex-control-thumbs');
            $wrap_vert_thumb_flex.find('.flex-control-nav.flex-control-thumbs > li:nth-child(' + $max_thumb + 'n + 1)').addClass('point');

            var $position;
            var $currentElement = $control_thumb.first();
            var $thumb_next = $wrap_vert_thumb_flex.find('.gt3_control_next');
            var $thumb_prev = $wrap_vert_thumb_flex.find('.gt3_control_prev');
            $thumb_prev.addClass('hidden');

            $thumb_next.on('click', function () {
                var $nextElement = $currentElement.nextAll('li.point');
                if ($nextElement.length) {
                    $currentElement = $nextElement.slice(0, 1);
                    $position = $control_wrap.scrollTop() + $currentElement.position().top;
                    $control_wrap.stop(true).animate({
                        scrollTop: $position
                    }, 600);
                }

                $thumb_prev.removeClass('hidden');
                if ($nextElement.length === 1) $thumb_next.addClass('hidden');

                return false;
            });

            $thumb_prev.on('click', function () {
                var $prevElement = $currentElement.prevAll('li.point');
                if ($prevElement.length) {
                    $currentElement = $prevElement.slice(0, 1);
                    $position = $control_wrap.scrollTop() + $currentElement.position().top;
                    $control_wrap.stop(true).animate({
                        scrollTop: $position
                    }, 600);
                }

                $thumb_next.removeClass('hidden');
                if ($prevElement.length === 1) $thumb_prev.addClass('hidden');

                return false;
            });
        }
    }
}

jQuery(document).ajaxComplete(function () {
    if (!jQuery('.gt3-thumbnails-control.slick-slider').length) {
        gt3_thumbnails_slider();
    }
    var modal = jQuery('#yith-quick-view-modal'), easyzoom, api,
        select = modal.find('.variations select');
    if (select.length) {
        select.on('change', function () {
            var thumbnails = modal.find('.gt3-thumbnails-control');
            var selectEmpty = true;

            select.each(function () {
                easyzoom = modal.find('.woocommerce-product-gallery__image').easyZoom();
                api = easyzoom.data('easyZoom');
                api.teardown();
                api._init();

                if (this.value !== '') {
                    selectEmpty = false;
                }
            });

            if (selectEmpty) {
                thumbnails.css({'height': 'auto'});
            } else {
                thumbnails.find('.gt3-thumb-control-item:first').trigger("click");
                thumbnails.css({'height': '0'});
            }
        })
    }
});

function gt3_thumbnails_slider() {
    var controls_wrapper, slides, slide, item;
    var slider_wrap = jQuery('#yith-quick-view-content'),
        slider = slider_wrap.find('.woocommerce-product-gallery__wrapper');
    if (slider.length) {
        slides = slider.find('.woocommerce-product-gallery__image');
        controls_wrapper = jQuery('<div class="gt3-thumbnails-control"></div>');

        for (var i = 0; i < slides.length; i++) {
            slide = slides[i];
            item = '<div class="gt3-thumb-control-item"><img src="' + jQuery(slide).attr('data-thumb') + '"></div>';
            controls_wrapper.append(item);
        }

        slider.parent().append(controls_wrapper);

        imagesLoaded(slider.parent(), gt3_vertical_thumb);
        slider_wrap.find('.woocommerce-product-gallery__image').easyZoom();
    }
}

function gt3_vertical_thumb() {
    var quick_view_content = jQuery('#yith-quick-view-content');
    if (quick_view_content.length) {
        quick_view_content.each(function () {
            var cur_slidesToShow = 1;
            var cur_sliderAutoplay = 4000;
            var cur_fade = true;

            jQuery(this).find('.woocommerce-product-gallery__wrapper').slick({
                slidesToShow: cur_slidesToShow,
                slidesToScroll: cur_slidesToShow,
                autoplay: false,
                autoplaySpeed: cur_sliderAutoplay,
                speed: 500,
                dots: false,
                fade: cur_fade,
                focusOnSelect: true,
                arrows: false,
                infinite: false,
                asNavFor: jQuery(this).find('.gt3-thumbnails-control')
            });
            jQuery(this).find('.gt3-thumbnails-control').slick({
                slidesToShow: 4,
                slidesToScroll: 1,
                nextArrow: '<i class="slick-next fa fa-angle-right"></i>',
                prevArrow: '<i class=" slick-prev fa fa-angle-left"></i>',
                asNavFor: jQuery(this).find('.woocommerce-product-gallery__wrapper'),
                dots: false,
                focusOnSelect: true,
                infinite: false
            });
            var x = jQuery(this).find('.woocommerce-product-gallery')[0];
            jQuery(x).addClass('ready');
        });
    }
}

function gt3_scroll_animation($wrapper, newItem) {
    if(typeof $wrapper === 'string') {
        $wrapper = jQuery($wrapper);
    }
    var order = 0,
        lastOffsetTop = 0,
        delay;
    jQuery.each($wrapper, function(index, value) {
        var wrapper = jQuery(this);
        wrapper.imagesLoaded(function () {
            var elOffset = wrapper.offset(),
                windowHeight = jQuery(window).outerHeight(),
                offset = 20;
            if (elOffset.top > (windowHeight + offset)) {
                if (order === 0) {
                    lastOffsetTop = elOffset.top;
                } else {
                    if (lastOffsetTop !== elOffset.top) {
                        order = 0;
                        lastOffsetTop = elOffset.top;
                    }
                }
                order++;
                index = order;
            }
            delay = index * 0.20;
            wrapper.css({
                'transition-delay': delay + 's'
            });
            wrapper.attr('data-delay', delay);
        });
    });
    $wrapper.appear(function () {
        var wrapper = jQuery(this),
            windowScrollTop = jQuery(window).scrollTop();
        if (newItem) {
            wrapper.addClass('loaded');
        } else {
            var addLoaded = setTimeout(function () {
                wrapper.addClass('loaded');
            }, 300);
            if (windowScrollTop > 100) {
                clearTimeout(addLoaded);
                wrapper.addClass('loaded');
            }
        }
        var elDur = wrapper.css('transition-duration'),
            elDelay = wrapper.css('transition-delay'),
            timeRemove = elDur.split('s')[0] * 1000 + elDelay.split('s')[0] * 1000 + 4000,
            notRemove = '.will-progress';
        wrapper.not(notRemove).delay(timeRemove).queue(function () {
            wrapper.removeClass('loaded gt3-anim-product').dequeue();
        });
        wrapper.delay(timeRemove).queue(function () {
            wrapper.css('transition-delay', '');
        });
    }, {
        accX: 0,
        accY: 30
    });
}

// Cart Count Icon Animation
function gt3_animate_cart () {
	jQuery.fn.shake = function(intShakes, intDistance, intDuration) {
		this.each(function() {
			for (var x=1; x<=intShakes; x++) {
				jQuery(this).animate({left:(intDistance*-1)}, (((intDuration/intShakes)/4)))
				.animate({left:intDistance}, ((intDuration/intShakes)/2))
				.animate({left:0}, (((intDuration/intShakes)/4)));
			}
		});
		return this;
	};
	jQuery(document.body).live('added_to_cart', function(el, data, params){
		setTimeout(function(){
			jQuery(".gt3_header_builder_cart_component").addClass("show_cart");
			jQuery(".woo_mini-count").shake(3,1.2,300);
			jQuery(".gt3-loading-overlay, .gt3-loading").remove();
		}, 300);
		setTimeout(function(){
			jQuery(".gt3_header_builder_cart_component").removeClass("show_cart");
		}, 2800);
    });
}

// Input spinner
function gt3_spinner_up_down () {
	var rtime;
	var timeout = false;
	var delta = 400;

	jQuery('body').on('tap click', '.gt3_qty_spinner .quantity-up', function() {
		var input 	= jQuery(this).parent().find('input[type="number"]'),
			max 		= input.attr('max'),
			oldValue 	= parseFloat(input.val()),
        	newVal;
		if (oldValue >= max && '' !== max) {
			newVal = oldValue;
		} else {
			newVal = oldValue + 1;
		}
		input.val(newVal).addClass('allotted');
		input.trigger("change");

		gt3_timeout(input);
	});

	jQuery('body').on('tap click', '.gt3_qty_spinner .quantity-down', function() {
		var input 	= jQuery(this).parent().find('input[type="number"]'),
			min 		= input.attr('min'),
			oldValue 	= parseFloat(input.val()),
			newVal;
		if (oldValue <= min && '' !== min) {
			newVal = oldValue;
		} else {
			newVal = oldValue - 1;
		}
		input.val(newVal).addClass('allotted');
		input.trigger("change");

		gt3_timeout(input);
	});

	function gt3_timeout(input){
		rtime = new Date();
		if (timeout === false) {
			timeout = true;
			setTimeout(clickend, delta);
		}
		function clickend() {
			if (new Date() - rtime < delta) {
				setTimeout(clickend, delta);
			} else {
				timeout = false;
				input.removeClass('allotted');
			}
		}
	}
}

function gt3_size_guide() {
	var size_popup = jQuery('.gt3_block_size_popup');
	if (size_popup.length) {
		size_popup.on('tap click', function(){
			image_size_popup = jQuery('.image_size_popup');
			image_size_popup.addClass('active');
			if (image_size_popup.hasClass('active')) {
				jQuery(document).keyup(function(e) {
					if (e.keyCode === 27) image_size_popup.removeClass('active');
				});
				jQuery('.image_size_popup .layer, .image_size_popup .close').on('tap click', function(){
					image_size_popup.removeClass('active');
				});
			}
		});
	}
}

function gt3_comment_label() {
	if (jQuery('#respond #commentform p[class*="comment-form-"] > label').length) {
		jQuery('#respond #commentform p[class*="comment-form-"] > label').each(function () {
			var _this_label = jQuery(this);
			_this_label.parent().find('input, textarea').on('focus', function () {
				_this_label.addClass('gt3_onfocus');
			}).on('blur', function () {
				if (jQuery(this).val() === "") {
					_this_label.removeClass('gt3_onfocus');
				} else {
					_this_label.addClass('gt3_onfocus');
				}
			});
		})
	}
}

function gt3_category_accordion () {
	var widget_product_categories = jQuery('.widget_product_categories');
	if (widget_product_categories.length) {
		widget_product_categories.each(function(){
			var $this = jQuery(this);
			var elements = $this.find('.product-categories>li.cat-parent');

			for (var i = 0; i < elements.length; i++) {
				if ( jQuery(elements[i]).hasClass('current-cat-parent') ) {
					jQuery(elements[i]).addClass('open').find('.current-cat').parent().slideDown();
				}
				jQuery(elements[i]).append("<span class=\"gt3-button-cat-open\"></span>");
			}
		});
		jQuery(".gt3-button-cat-open").on("click", function () {
			jQuery(this).parent().toggleClass('open');
			if (jQuery(this).parent().hasClass('open')) {
				jQuery(this).parent().children('.children').slideDown();
			} else {
				jQuery(this).parent().children('.children').slideUp();
			}
		})
	}
}

// func called from frontend
function gt3_clear_recently_products(el){
	document.cookie = 'gt3_product_recently_viewed=;path=/';
	jQuery(el).parent().fadeOut(400);
}

function woocommerce_triger_lightbox() {
    jQuery('.woocommerce-product-gallery .woocommerce-product-gallery__wrapper').on('click', function () {
        jQuery('.woocommerce-product-gallery a.woocommerce-product-gallery__trigger').trigger( "click" );
    });
}

function gt3_replace_product_gallery_trigger(){
    var $product_gallery = jQuery('.woocommerce-product-gallery');
    if ($product_gallery.length) {
        $product_gallery.append( jQuery('.woocommerce-product-gallery__trigger') );
    }
}

function gt3_login_register(){
    var $modal = jQuery('.gt3_header_builder__login-modal');
    if (!jQuery('body').hasClass('woocommerce-account') && $modal.find('.woocommerce-error').length){
        $modal.addClass('active');
    }
}

function gt3_infinite_scroll() {
    if (window.sessionStorage && sessionStorage.getItem('gt3-show_all') && sessionStorage.getItem('gt3-show_all') === 'true'){
        jQuery('.infinite_scroll-view_all').removeClass('infinite_scroll-view_all').addClass('infinite_scroll-always');
    }
    var elem = jQuery('.infinite_scroll-always .products');
    if (elem.length) {
        elem.each(function () {
            var $this = jQuery(this);
            $this.infiniteScroll({
                path: ".next.page-numbers",
                append: ".products > .product",
                prefill: true,
                scrollThreshold: viewport().height * 1.2,
                history: false,
                hideNav: '.woocommerce-pagination',
                status: '.spinner.infinite-scroll'
            });
            $this.on('append.infiniteScroll', function () {
                if (jQuery(".gt3-animation-wrapper.gt3-anim-product").length) {
                    gt3_scroll_animation('.gt3-animation-wrapper.gt3-anim-product:not(.loaded)', true);
                }
            });

            if (window.sessionStorage && sessionStorage.getItem('gt3-show_all') && sessionStorage.getItem('gt3-show_all') === 'true'){
                sessionStorage.setItem('gt3-show_all', 'false');
                setCookie('gt3-show_all', 'false');

                $this.imagesLoaded(function () {
                    setTimeout(function () {
                        gt3_scrollTo($this.find('.product:first-of-type'), 2500);
                    }, 500);
                });

            }
        });
    }

    var elem2 = jQuery('.infinite_scroll-view_all .products');
    if (elem2.length) {
        elem2.each(function () {
            var $this = jQuery(this),
                $top_nav = $this.prev('.gt3-products-header').find('.gt3-pagination_nav');
            $top_nav.find('.gt3_show_all').on('click tap', function (e) {
                var $button = jQuery(this);
                if ( window.sessionStorage && sessionStorage.getItem('gt3-show_all') !== 'true'){
                    if ( $button.hasClass('first-page') ){
                        e.preventDefault();
                        $top_nav.find('.gt3_show_all_li').fadeOut(300);
                        $this.next('.spinner.infinite-scroll').fadeIn(300);
                        setTimeout(function () {
                            gt3_scrollTo($this.find('.product:first-of-type'), 2500);
                        }, 500);
                    }else{
                        sessionStorage.setItem('gt3-show_all', 'true');
                        setCookie('gt3-show_all', 'true');
                    }
                }

                $this.infiniteScroll({
                    path: ".next.page-numbers",
                    append: ".products > .product",
                    prefill: true,
                    scrollThreshold: viewport().height * 1.2,
                    history: false,
                    hideNav: '.gt3-products-bottom .woocommerce-pagination',
                    status: '.spinner.infinite-scroll'
                });
                $this.on('append.infiniteScroll', function () {
                    if (jQuery(".gt3-animation-wrapper.gt3-anim-product").length) {
                        gt3_scroll_animation('.gt3-animation-wrapper.gt3-anim-product:not(.loaded)', false);
                    }
                });
            });
        });
    }
}

function gt3_scrollTo(element, duration, callback) {
    if (typeof element !== "number") {
        element = element.offset().top - 200;
    }
    window.scrollTo({
        top: element,
        behavior: "smooth"
    });
}

function setCookie(name, value, options) {
    options = options || {};

    options = Object.assign({},options,{
	    path: '/',
	    expires: 2592000 // month
    });

    var expires = options.expires;

    if (typeof expires === "number" && expires) {
        var d = new Date();
        d.setTime(d.getTime() + expires * 1000);
        expires = options.expires = d;
    }
    if (expires && expires.toUTCString) {
        options.expires = expires.toUTCString();
    }

    var updatedCookie = name + "=" + (typeof value === "object" ? JSON.stringify(value) : value);

    for (var propName in options) {
        updatedCookie += "; " + propName;
        var propValue = options[propName];
        if (propValue !== true) {
            updatedCookie += "=" + propValue;
        }
    }

    document.cookie = updatedCookie;
}

function getCookie(name) {
    var matches = document.cookie.match(new RegExp(
        "(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)"
    ));
    return matches ? decodeURIComponent(matches[1]) : undefined;
}

 

Opera Snapshot_2020-09-18_173838_codepen.io.png

سلام. ببینید خطای عدم شناسایی jquery اغلب مواقع مربوط به این هست که اولویت لود جی کوئری تغییر کرده. این اتفاق میتونه مربوط به افزونه های کش و بهینه سازی باشه که جی کوئری رو مثل بقیه فایلهای جانبی preload ,.... میکنن. اگه افزونه ای در این زمینه دارید غیر فعالش کنید و تست بگیرید و اگه مشکل حل شد باید تنظیمات افزونه رو بررسی کنید. تقریبا همه شون بخشی دارن که جی کوئری رو مستثنی (exclude) میکنه.

لینک به ارسال

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...