Перейти к содержимому


Загрузка Только Центральной Части Сайта, Без Обёртки Шаблоном "Html"


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 61

#41 AlexP_RUS

AlexP_RUS

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 491 сообщений

Отправлено 10 Декабрь 2013 - 10:44

Цитата

Вы хотите чтобы при применении фильтров обновлялась только центральная часть с товарами?
Да, именно так.

#42 Koderhan

Koderhan

    Активный участник

  • Модератоpы
  • 6 227 сообщений

Отправлено 10 Декабрь 2013 - 18:19

Просмотр сообщенияAlexP_RUS (10 Декабрь 2013 - 10:44) писал:

Да, именно так.

Панель администратора, "Сайт"->"Редактор шаблонов".
В файле "main.js".
Найти код:
  // Фильтры по товарам. При нажании на какую либо характеристику или свойство товара происходит фильтрация товаров
  $('.contentTbodySearchFilterBlock input').click(function(){
	$(this)[0].form.submit();
  });
Заменить:
  // Фильтры по товарам. При нажании на какую либо характеристику или свойство товара происходит фильтрация товаров
  $('.contentTbodySearchFilterBlock input').click(function(){
	var formFilter = $(this).closest('form').serializeArray();
	formFilter.push({name: 'only_body', value: 1});
	$.get('', formFilter, function(d) {
	  $('#primaryContent').html(d);
	});
  });
Может не работать в некоторых старых браузерах.

#43 AlexP_RUS

AlexP_RUS

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 491 сообщений

Отправлено 10 Декабрь 2013 - 18:51

Так не работает.

#44 Сake

Сake

    Активный участник

  • Модератоpы
  • 5 979 сообщений

Отправлено 11 Декабрь 2013 - 03:00

Попробуйте код

  // Фильтры по товарам. При нажании на какую либо характеристику или свойство товара происходит фильтрация товаров
  $('.contentTbodySearchFilterBlock input').click(function(){
		var formFilter = $(this).closest('form').serializeArray();
		formFilter.push({name: 'only_body', value: 1});
		$.get('', formFilter, function(d) {
		  $('#primaryContent').html(d);
		});
  });

заменить на

  // Фильтры по товарам. При нажании на какую либо характеристику или свойство товара происходит фильтрация товаров
  $('.contentTbodySearchFilterBlock input').live('click', function(){
		$.get(document.location.href + '?' +  $(this).closest('form').serialize() + '&only_body=1', function(d) {
		  $('#primaryContent').html(d);
		});
  });


#45 AlexP_RUS

AlexP_RUS

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 491 сообщений

Отправлено 11 Декабрь 2013 - 16:40

Так работает, но теперь все три фильтра (сверху, сбоку и фильтр по цене) функционируют сами по себе, без связки друг с другом. А фильтры по цене по-прежнему обновляют всю страницу.

#46 Сake

Сake

    Активный участник

  • Модератоpы
  • 5 979 сообщений

Отправлено 12 Декабрь 2013 - 02:36

Попробуйте сделать следующее - в шаблоне "HTML" найдите строку

<div class="contentTbodySearchPriceFilterBlock cornerAll">

и замените её на

<div class="contentTbodySearchFilterBlock contentTbodySearchPriceFilterBlock cornerAll">

далее замените код в файле main.js

// Фильтры по товарам. При нажании на какую либо характеристику или свойство товара происходит фильтрация товаров
  $('.contentTbodySearchFilterBlock input').live('click', function(){
				$.get(document.location.href + '?' +  $(this).closest('form').serialize() + '&only_body=1', function(d) {
				  $('#primaryContent').html(d);
				});
  });

на следующий код

// Фильтры по товарам. При нажании на какую либо характеристику или свойство товара происходит фильтрация товаров
  $('.contentTbodySearchFilterBlock input, .goodsFilterPriceSubmit input').live('click', function() {
		var form = ($('.contentTbodySearchFilterBlock').map(function() {
			var serialize = $(this).closest('form').serialize();
	  return(serialize.length ? serialize : null);
  })).get().join('&');
  $.get(document.location.href + '?' +  form + '&only_body=1', function(d) {
				  $('#primaryContent').html(d);
		});
  });


#47 AlexP_RUS

AlexP_RUS

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 491 сообщений

Отправлено 12 Декабрь 2013 - 12:37

Сейчас стали реагировать друг на друга лучше, но "Фильтры по цене" всё так же обновляют страницу целиком, в добавок к этому, при применении "фильтр по цене" нижний правый блок фильтров реагирует нормально, а вот верхний блок фильтров "Производители" не реагирует вообще, нажимаешь на параметр он обратно его отжимает.

#48 Сake

Сake

    Активный участник

  • Модератоpы
  • 5 979 сообщений

Отправлено 13 Декабрь 2013 - 04:22

Попробуйте вместо кода

// Фильтры по товарам. При нажании на какую либо характеристику или свойство товара происходит фильтрация товаров
  $('.contentTbodySearchFilterBlock input, .goodsFilterPriceSubmit input').live('click', function() {
				var form = ($('.contentTbodySearchFilterBlock').map(function() {
						var serialize = $(this).closest('form').serialize();
		  return(serialize.length ? serialize : null);
  })).get().join('&');
  $.get(document.location.href + '?' +  form + '&only_body=1', function(d) {
								  $('#primaryContent').html(d);
				});
  });

использовать код

// Фильтры по товарам. При нажании на какую либо характеристику или свойство товара происходит фильтрация товаров
$('.contentTbodySearchFilterBlock input, .goodsFilterPriceSubmit input').live('click', function() {
  var form = ($('.contentTbodySearchFilterBlock').map(function() {
		 var serialize = $(this).closest('form').serialize();
		 return(serialize.length ? serialize : null);
  })).get().join('&');
  $.get(document.location.href + '?' +  form, function(html) {
	 $('#primaryContent').html($(html).find('#primaryContent').html());
	 $('.rblock .contentTbodySearchFilterBlock:last')
		.html($(html).find('.rblock .contentTbodySearchFilterBlock:last').html());
  });
  return(false);
});


#49 AlexP_RUS

AlexP_RUS

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 491 сообщений

Отправлено 13 Декабрь 2013 - 17:19

Если с прошлым кодом при переключении характеристик фильтры летали, то с этим кодом при переключении фильтры 2-3 секунды думают, и только потом переключаются.

П.С. фильтр по цене стал обновлять только центральную часть.

#50 Сake

Сake

    Активный участник

  • Модератоpы
  • 5 979 сообщений

Отправлено 14 Декабрь 2013 - 03:20

Цитата

Если с прошлым кодом при переключении характеристик фильтры летали, то с этим кодом при переключении фильтры 2-3 секунды думают, и только потом переключаются.

Возможно имеется проблема в соединении с интернетом или медленным ответом сервера, так как предыдущий код по сути не отличается от текущего, отличия которые присутствуют не могут уменьшить скорость на 2-3 сек.

Цитата

фильтр по цене стал обновлять только центральную часть

Фильтр по цене так же как и другие фильтры обновляют не только центральную часть, но и правую часть с фильтрами по товарам. Это реализовано через строку

$('.rblock .contentTbodySearchFilterBlock:last').html($(html).find('.rblock .contentTbodySearchFilterBlock:last').html());

при применении фильтра видно через firebug что блок корректно обновляется при получении ответа.

#51 AlexP_RUS

AlexP_RUS

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 491 сообщений

Отправлено 14 Декабрь 2013 - 14:31

Да, скорее всего проблема была с медленным ответом сервера, т.к. сейчас вроде всё быстро переключается.

Сейчас ещё обнаружил такую проблему: когда ползунок цены меняешь, то фильтры при любом диапазоне цены остаются открытыми, хотя многих параметров уже нет при той или иной цене. Поэтому когда нажимаешь на тот параметр, который должен быть закрыт выскакивает предложение "Нет товаров для выбранных условий", но это не страшно, т.к. параметр можно отжать, однако при выборе параметра на верхнем блоке "Производители" отжать уже не получится, т.к. с предложением "Нет товаров для выбранных условий" исчезает сам блок фильтров.
Как сделать, чтобы он не исчезал?

#52 Сake

Сake

    Активный участник

  • Модератоpы
  • 5 979 сообщений

Отправлено 17 Декабрь 2013 - 03:04

Можно попробовать сделать проверку на существование товара при выбранных условиях фильтра перед обновлением содержимоего страницы. Попробуйте использовать код (вместо предыдущего)

// Фильтры по товарам. При нажании на какую либо характеристику или свойство товара происходит фильтрация товаров
$('.contentTbodySearchFilterBlock input, .goodsFilterPriceSubmit input').live('click', function() {
  var form = ($('.contentTbodySearchFilterBlock').map(function() {
				 var serialize = $(this).closest('form').serialize();
				 return(serialize.length ? serialize : null);
  })).get().join('&');
  $.get(document.location.href + '?' +  form, function(html) {
		 if($('#primaryContent .goodsListItem').length) {
			$('#primaryContent').html($(html).find('#primaryContent').html());
			$('.rblock .contentTbodySearchFilterBlock:last')
				.html($(html).find('.rblock .contentTbodySearchFilterBlock:last').html());
		 }
		 else {
			alert($.trim($('#primaryContent h3:first').text()));
		}  
  });
  return(false);
});


#53 AlexP_RUS

AlexP_RUS

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 491 сообщений

Отправлено 18 Декабрь 2013 - 16:56

По-прежнему фильтры сверху пропадают.

#54 Сake

Сake

    Активный участник

  • Модератоpы
  • 5 979 сообщений

Отправлено 19 Декабрь 2013 - 02:54

Прошу прощения, в коде немного не правильную точку поиска задал. Используйте код

// Фильтры по товарам. При нажании на какую либо характеристику или свойство товара происходит фильтрация товаров
$('.contentTbodySearchFilterBlock input, .goodsFilterPriceSubmit input').live('click', function() {
  var form = ($('.contentTbodySearchFilterBlock').map(function() {
								 var serialize = $(this).closest('form').serialize();
								 return(serialize.length ? serialize : null);
  })).get().join('&');
  $.get(document.location.href + '?' +  form, function(html) {
				 if($(html).find('#primaryContent .goodsListItem').length) {
						$('#primaryContent').html($(html).find('#primaryContent').html());
						$('.rblock .contentTbodySearchFilterBlock:last')
								.html($(html).find('.rblock .contentTbodySearchFilterBlock:last').html());
				 }
				 else {
						alert($.trim($(html).find('#primaryContent h3:first').text()));
				} 
  });
  return(false);
});

Это должно помочь. В результате сообщение "Нет товаров для выбранных условий" будет отображаться в сплывающем окне.

#55 AlexP_RUS

AlexP_RUS

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 491 сообщений

Отправлено 22 Декабрь 2013 - 18:37

Нет, всплывающее окно мне не нужно, мне просто надо чтобы верхние фильтры не пропадали. То есть чтобы фильтры сверху оставались на месте так же как фильтры справа.

#56 Сake

Сake

    Активный участник

  • Модератоpы
  • 5 979 сообщений

Отправлено 24 Декабрь 2013 - 04:00

Без какого либо уведомления будет не понятно почему фильтр не применяется. Код фильтра находиться в одном блоке с кодом товаров, после применения фильтра - обновляется как содержимое страницы, так и сам код фильтра. Если вы не хотите использовать сообщение в отдельном окне, то можно это сообщение вставлять вместо товаров сразу под фильтром. Для этого используйте код

// Фильтры по товарам. При нажании на какую либо характеристику или свойство товара происходит фильтрация товаров
$('.contentTbodySearchFilterBlock input, .goodsFilterPriceSubmit input').live('click', function() {
  var form = ($('.contentTbodySearchFilterBlock').map(function() {
																 var serialize = $(this).closest('form').serialize();
																 return(serialize.length ? serialize : null);
  })).get().join('&');
  $.get(document.location.href + '?' +  form, function(html) {
								 if($(html).find('#primaryContent .goodsListItem').length) {
										$('#primaryContent').html($(html).find('#primaryContent').html());
										$('.rblock .contentTbodySearchFilterBlock:last')
											.html($(html).find('.rblock .contentTbodySearchFilterBlock:last').html());
								 }
								 else {
									$('.goodsListItem').closest('table').closest('td').empty().append($(html).find('#primaryContent h3:first'));
		 $('.square_pages').closest('tr').remove();
								}
  });
  return(false);
});


#57 AlexP_RUS

AlexP_RUS

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 491 сообщений

Отправлено 27 Декабрь 2013 - 19:01

Практически то что нужно, вот только предложение "Нет товаров для выбранных условий" повторяется в ряд несколько раз.

#58 Сake

Сake

    Активный участник

  • Модератоpы
  • 5 979 сообщений

Отправлено 28 Декабрь 2013 - 04:33

Можно добавить дополнительное условие для исключения дублей. Попробуйте использовать код

// Фильтры по товарам. При нажании на какую либо характеристику или свойство товара происходит фильтрация товаров
$('.contentTbodySearchFilterBlock input, .goodsFilterPriceSubmit input').live('click', function() {
  var form = ($('.contentTbodySearchFilterBlock').map(function() {
				var serialize = $(this).closest('form').serialize();
				return(serialize.length ? serialize : null);
			})).get().join('&');
  $.get(document.location.href + '?' +  form, function(html) {
		if($(html).find('#primaryContent .goodsListItem').length) {
			$('#primaryContent').html($(html).find('#primaryContent').html());
				$('.rblock .contentTbodySearchFilterBlock:last')
					.html($(html).find('.rblock .contentTbodySearchFilterBlock:last').html());
		}
		else if(!$('h3.not-found').length) {
			$('.goodsListItem').closest('table').closest('td').empty()
	   .append($(html).find('#primaryContent h3:first').addClass('not-found'));
			$('.square_pages').closest('tr').remove();
		}
  });
  return(false);
});


#59 AlexP_RUS

AlexP_RUS

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 491 сообщений

Отправлено 28 Декабрь 2013 - 10:12

Повторение дублей этого предложения осталось

#60 Сake

Сake

    Активный участник

  • Модератоpы
  • 5 979 сообщений

Отправлено 31 Декабрь 2013 - 00:17

Попробуйте код

// Фильтры по товарам. При нажании на какую либо характеристику или свойство товара происходит фильтрация товаров
$('.contentTbodySearchFilterBlock input, .goodsFilterPriceSubmit input').live('click', function() {
	var form = ($('.contentTbodySearchFilterBlock').map(function() {
		var serialize = $(this).closest('form').serialize();
		return(serialize.length ? serialize : null);
	})).get().join('&');
	$.get(document.location.href + '?' +  form, function(html) {
		if($(html).find('#primaryContent .goodsListItem').length) {
			$('#primaryContent').html($(html).find('#primaryContent').html());
			$('.rblock .contentTbodySearchFilterBlock:last')
				.html($(html).find('.rblock .contentTbodySearchFilterBlock:last').html());
		}
		else if(!$('h3.not-found').length) {
			$('#primaryContent > table tr:eq(2) td').empty().html($(html).find('#primaryContent h3').eq(0).addClass('not-found').clone());
			$('.square_pages').closest('tr').remove();
		}
  });
  return(false);
});

Немного изменил селектор поиска обновляемых элементов.




Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных