Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Ajax обновление товаров с OCFILTER


Recommended Posts

Добрый день, есть ли у кого-то готовое решение которое позволит обновлять контент(включая список выбранных фильтров) и товары на ajax после применения фильтров с помощью модуля ocfilter? (Сейчас только с перезагрузкой стр) Если да, напишите цену пожалуйста, спасибо!

Змінено користувачем AndreLisif
Надіслати
Поділитися на інших сайтах


17.05.2022 в 19:59, buslikdrev сказал:

Обновите модуль просто.

У меня последняя версия, там нет обновления товаров после применения фильтров на ajax. На ajax подгружаються только фильтры в самом модуле

Надіслати
Поділитися на інших сайтах


Тогда посмотрите, как реализована загрузка отзывов на странице товара и установите код загрузки товара в том месте фильтра, где формируется ссылка на кнопку перехода на страницу, а кнопку скройте.

  • +1 1
Надіслати
Поділитися на інших сайтах

Вот ещё скрипт подгрузки товара для стандартного шаблона, посмотрите, как работает ajax

Скрытый текст
<script type="text/javascript"><!--
$(function() {
		var autoscroller = [];
		// style
		// место нахождение кнопки подгрузки
		autoscroller.catcher = '#endless';
		// html-код кнопки подгрузки
		autoscroller.htmlButton = '<div class="col-xs-12 text-center"><button class="btn btn-success btn-lg" id="endless" style="margin: 15px auto; padding: 10px 60px; white-space: pre;" ><i class="fa fa-refresh"></i> <span class="textNewTotal"></span></button></div>';
		// место нахождение подсчёт товара
		autoscroller.textTotal = '#content div.col-sm-6.text-right';
		// место вывода подсчёт товара
		autoscroller.textNewTotal = 'button .textNewTotal';
		// место нахождение кнопок пагинации
		autoscroller.textPagination = '.pagination';
		// style
		// setting
		autoscroller.hidePagination = 1;	// вкл\откл пагинации
		autoscroller.autoScroll = 1;		// вкл\откл автоподгрузки
		autoscroller.delay = 1000;			// время задержки перед автоподгрузкой
		autoscroller.loading = 1;			// вкл\откл автоподгрузки после первого нажатия кнопки загрузки
		autoscroller.productTotal = 1;		// вкл\откл подсчёт товара
		autoscroller.disabled = 1;			// вкл\откл деактивации кнопки во время загрузки товара
		// setting
		
	if (autoscroller.productTotal) {
		$(autoscroller.textTotal).hide();
		if (getUrlParameter('page') > 1) {
			var productMaxTotal = Math.max.apply(Math, $(autoscroller.textTotal).text().match(/\d+/g)) - ($('.product-grid, .product-list').length * getUrlParameter('page') - $('.product-grid, .product-list').length);
			var productNewTotal = Math.max.apply(Math, $(autoscroller.textTotal).text().match(/\d+/g)) - ($('.product-grid, .product-list').length * getUrlParameter('page'));
		} else {
			var productMaxTotal = Math.max.apply(Math, $(autoscroller.textTotal).text().match(/\d+/g));
			var productNewTotal = Math.max.apply(Math, $(autoscroller.textTotal).text().match(/\d+/g)) - $('.product-grid, .product-list').length;
		}
	} else {
		$(autoscroller.textTotal).hide();
	}
	
	if (autoscroller.hidePagination) {
		$(autoscroller.textPagination).hide();
	}
	
	$(window).scroll(function() {
		if (inWindow(autoscroller.catcher) && !autoscroller.loading && autoscroller.autoScroll) {
			if (autoscroller.productTotal) {
				productNewTotal = Math.min.apply(Math, $(autoscroller.textNewTotal).text().match(/\d+/g));
			}
			$(autoscroller.catcher).prop("disabled", autoscroller.disabled);
			autoscroller.loading = 1;
			$(autoscroller.catcher + ' .fa-refresh').addClass('fa-spin');
			setTimeout(function() {
				$(autoscroller.catcher).trigger('click');
			}, autoscroller.delay);
		}
	});
	
	if ($('.product-grid, .product-list').length) {
		if ($(autoscroller.textPagination).length && !$(autoscroller.textPagination + ' > li:last-child').hasClass('active')) {
			
			$(autoscroller.textPagination).parent().before(autoscroller.htmlButton);
			
			$(autoscroller.catcher).on('click', function(e) {
				var nextPage = $('ul' + autoscroller.textPagination + ' li.active').next().find('a:first-child');
				
				$.ajax({
					url: $(nextPage).attr('href'),
					beforeSend: function(){
						$(autoscroller.catcher + ' .fa-refresh').addClass('fa-spin');
					},
					success: function(data){
						var products = $(data).find('.product-grid, .product-list');
						
						$(autoscroller.textPagination).parent().parent().parent().find('.product-layout:last-child').after(products);
						
						if (localStorage.getItem('display') == 'grid') {
							cols = $('#column-right, #column-left').length;
							
							if (cols == 2) {
								$(products).attr('class', 'product-layout product-grid col-lg-6 col-md-6 col-sm-12 col-xs-12');
							} else if (cols == 1) {
								$(products).attr('class', 'product-layout product-grid col-lg-4 col-md-4 col-sm-6 col-xs-12');
							} else {
								$(products).attr('class', 'product-layout product-grid col-lg-3 col-md-3 col-sm-6 col-xs-12');
							}
						}
						
						$(autoscroller.textPagination).html($(data).find(autoscroller.textPagination + ' > *'));
						
						nextPage = $('ul' + autoscroller.textPagination + ' li.active').next().find('a:first-child');
						
						if (nextPage.length == 0) {
							$(autoscroller.catcher).remove();
						} else {
							$(autoscroller.catcher + ' .fa-refresh').removeClass('fa-spin');
						}
						
						if (autoscroller.productTotal) {
							$(autoscroller.textNewTotal).text(' (Осталось товаров: ' + (productNewTotal = productNewTotal - products.length) + ' из ' + productMaxTotal + ')');
						}
						
						$(autoscroller.catcher).prop("disabled", false);
						
						autoscroller.loading = 0;
												
						return false;
					}
				});
			});
		}
	}
	
	if (autoscroller.productTotal) {
		$(autoscroller.textNewTotal).text(' (Осталось товаров: ' + productNewTotal + ' из ' + productMaxTotal + ')');
	}
	
	function getUrlParameter(sParam) {
		var sPageURL = decodeURIComponent(window.location.search.substring(1)),
			sURLVariables = sPageURL.split('&'),
			sParameterName,
			i;

		for (i = 0; i < sURLVariables.length; i++) {
			sParameterName = sURLVariables[i].split('=');

			if (sParameterName[0] === sParam) {
				return sParameterName[1];
			}
		}
		
		return 1;
	};
	
	function inWindow(el){
		if($(el).length) {
			var scrollTop = $(window).scrollTop();
			var windowHeight = $(window).height();
			var offset = $(el).offset();
		  
			if (scrollTop <= offset.top && ($(el).height() + offset.top) < (scrollTop + windowHeight)) {
				return true;
			}
		};
		
		return false;
	}
});
//--></script>

 

 

  • +1 1
Надіслати
Поділитися на інших сайтах

17.05.2022 в 20:19, buslikdrev сказал:

Вот ещё скрипт подгрузки товара для стандартного шаблона, посмотрите, как работает ajax

  Показать содержимое
<script type="text/javascript"><!--
$(function() {
		var autoscroller = [];
		// style
		// место нахождение кнопки подгрузки
		autoscroller.catcher = '#endless';
		// html-код кнопки подгрузки
		autoscroller.htmlButton = '<div class="col-xs-12 text-center"><button class="btn btn-success btn-lg" id="endless" style="margin: 15px auto; padding: 10px 60px; white-space: pre;" ><i class="fa fa-refresh"></i> <span class="textNewTotal"></span></button></div>';
		// место нахождение подсчёт товара
		autoscroller.textTotal = '#content div.col-sm-6.text-right';
		// место вывода подсчёт товара
		autoscroller.textNewTotal = 'button .textNewTotal';
		// место нахождение кнопок пагинации
		autoscroller.textPagination = '.pagination';
		// style
		// setting
		autoscroller.hidePagination = 1;	// вкл\откл пагинации
		autoscroller.autoScroll = 1;		// вкл\откл автоподгрузки
		autoscroller.delay = 1000;			// время задержки перед автоподгрузкой
		autoscroller.loading = 1;			// вкл\откл автоподгрузки после первого нажатия кнопки загрузки
		autoscroller.productTotal = 1;		// вкл\откл подсчёт товара
		autoscroller.disabled = 1;			// вкл\откл деактивации кнопки во время загрузки товара
		// setting
		
	if (autoscroller.productTotal) {
		$(autoscroller.textTotal).hide();
		if (getUrlParameter('page') > 1) {
			var productMaxTotal = Math.max.apply(Math, $(autoscroller.textTotal).text().match(/\d+/g)) - ($('.product-grid, .product-list').length * getUrlParameter('page') - $('.product-grid, .product-list').length);
			var productNewTotal = Math.max.apply(Math, $(autoscroller.textTotal).text().match(/\d+/g)) - ($('.product-grid, .product-list').length * getUrlParameter('page'));
		} else {
			var productMaxTotal = Math.max.apply(Math, $(autoscroller.textTotal).text().match(/\d+/g));
			var productNewTotal = Math.max.apply(Math, $(autoscroller.textTotal).text().match(/\d+/g)) - $('.product-grid, .product-list').length;
		}
	} else {
		$(autoscroller.textTotal).hide();
	}
	
	if (autoscroller.hidePagination) {
		$(autoscroller.textPagination).hide();
	}
	
	$(window).scroll(function() {
		if (inWindow(autoscroller.catcher) && !autoscroller.loading && autoscroller.autoScroll) {
			if (autoscroller.productTotal) {
				productNewTotal = Math.min.apply(Math, $(autoscroller.textNewTotal).text().match(/\d+/g));
			}
			$(autoscroller.catcher).prop("disabled", autoscroller.disabled);
			autoscroller.loading = 1;
			$(autoscroller.catcher + ' .fa-refresh').addClass('fa-spin');
			setTimeout(function() {
				$(autoscroller.catcher).trigger('click');
			}, autoscroller.delay);
		}
	});
	
	if ($('.product-grid, .product-list').length) {
		if ($(autoscroller.textPagination).length && !$(autoscroller.textPagination + ' > li:last-child').hasClass('active')) {
			
			$(autoscroller.textPagination).parent().before(autoscroller.htmlButton);
			
			$(autoscroller.catcher).on('click', function(e) {
				var nextPage = $('ul' + autoscroller.textPagination + ' li.active').next().find('a:first-child');
				
				$.ajax({
					url: $(nextPage).attr('href'),
					beforeSend: function(){
						$(autoscroller.catcher + ' .fa-refresh').addClass('fa-spin');
					},
					success: function(data){
						var products = $(data).find('.product-grid, .product-list');
						
						$(autoscroller.textPagination).parent().parent().parent().find('.product-layout:last-child').after(products);
						
						if (localStorage.getItem('display') == 'grid') {
							cols = $('#column-right, #column-left').length;
							
							if (cols == 2) {
								$(products).attr('class', 'product-layout product-grid col-lg-6 col-md-6 col-sm-12 col-xs-12');
							} else if (cols == 1) {
								$(products).attr('class', 'product-layout product-grid col-lg-4 col-md-4 col-sm-6 col-xs-12');
							} else {
								$(products).attr('class', 'product-layout product-grid col-lg-3 col-md-3 col-sm-6 col-xs-12');
							}
						}
						
						$(autoscroller.textPagination).html($(data).find(autoscroller.textPagination + ' > *'));
						
						nextPage = $('ul' + autoscroller.textPagination + ' li.active').next().find('a:first-child');
						
						if (nextPage.length == 0) {
							$(autoscroller.catcher).remove();
						} else {
							$(autoscroller.catcher + ' .fa-refresh').removeClass('fa-spin');
						}
						
						if (autoscroller.productTotal) {
							$(autoscroller.textNewTotal).text(' (Осталось товаров: ' + (productNewTotal = productNewTotal - products.length) + ' из ' + productMaxTotal + ')');
						}
						
						$(autoscroller.catcher).prop("disabled", false);
						
						autoscroller.loading = 0;
												
						return false;
					}
				});
			});
		}
	}
	
	if (autoscroller.productTotal) {
		$(autoscroller.textNewTotal).text(' (Осталось товаров: ' + productNewTotal + ' из ' + productMaxTotal + ')');
	}
	
	function getUrlParameter(sParam) {
		var sPageURL = decodeURIComponent(window.location.search.substring(1)),
			sURLVariables = sPageURL.split('&'),
			sParameterName,
			i;

		for (i = 0; i < sURLVariables.length; i++) {
			sParameterName = sURLVariables[i].split('=');

			if (sParameterName[0] === sParam) {
				return sParameterName[1];
			}
		}
		
		return 1;
	};
	
	function inWindow(el){
		if($(el).length) {
			var scrollTop = $(window).scrollTop();
			var windowHeight = $(window).height();
			var offset = $(el).offset();
		  
			if (scrollTop <= offset.top && ($(el).height() + offset.top) < (scrollTop + windowHeight)) {
				return true;
			}
		};
		
		return false;
	}
});
//--></script>

 

 

Спасибо за подсказку, попробую

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.