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


Слайдер В Каталоге


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

#1 borisovd

borisovd

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

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

Отправлено 20 Ноябрь 2013 - 16:50

Помогите поставить это слайдер http://bxslider.com/ Нужно поставить его вместо изображений в каталоге товаров. Что бы фотографии листались из каталога.

#2 borisovd

borisovd

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

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

Отправлено 20 Ноябрь 2013 - 21:59

Ну или какой нибудь похожий слайдер. Нужно как здесь http://www.butik.ru/...odezhda/brjuki/

#3 Сake

Сake

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

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

Отправлено 21 Ноябрь 2013 - 02:54

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

#4 borisovd

borisovd

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

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

Отправлено 21 Ноябрь 2013 - 03:09

Просмотр сообщенияСake (21 Ноябрь 2013 - 02:54) писал:

На данный момент у вас уже имеется переключение изображений в сплывающем окне. Вы хотите отключить эту возможность и добавить ту которую приводите в качестве примера по ссылке?
Так хотелось изначально. Но ответили что не получиться http://forum.storela...отр/#entry97107 Хотя по идеи можно засунуть слайдер в место картинки товара а фотографии во внутрь слайдера то же реально сделать, вот написал еще раз. Вдруг решение кто придумает:) И вроде как Вы знаете)

#5 Сake

Сake

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

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

Отправлено 22 Ноябрь 2013 - 03:02

В подобной реализации слайдер лучше не использовать, так как это очень сильно будет влиять на скорость отрисовки страницы каталога в зависимости от числа товаров в категории. Реализовать подобное с учетом уже существующей реализации не проблематично, достаточно будет добавить кнопки и дополнительные события, а старые события убрать. В самом шаблоне "Товары" останется только заменить строку

<img src="{goods.images.LARGE}" alt="{goods.images.NAME}" />

на

<img src="{goods.images.IMAGE_SMALL}" alt="{goods.images.NAME}" />

Как выполните данное изменение - сообщите.

#6 borisovd

borisovd

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

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

Отправлено 22 Ноябрь 2013 - 09:20

А если все таки слайдер делать? просто фотографии минимального размера будут. Подскажи сделать слайдером это.

#7 borisovd

borisovd

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

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

Отправлено 22 Ноябрь 2013 - 17:17

Если получиться сделать вот это http://forum.storela..._20#entry104158 но слайдер фотографий отпадает.

#8 Сake

Сake

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

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

Отправлено 23 Ноябрь 2013 - 01:14

Именно об этой реализации я и писал вам ранее. Для начала вам необходимо удалить код из файла main.js по активной реализации

$(function() {
$('.prd-image a img').live('mouseenter', function () {
		 $(this).data('hover', true).parent().removeAttr('title');
		 setTimeout($.proxy(function() {
				var goods_images_list = $(this).closest('.prd-image').find('.goods_images_list');
var offset = goods_images_list.width() + goods_images_list.children('div').width()
				  + goods_images_list.offset().left;
if($(window).width() < offset) {
  goods_images_list.addClass('view-right');
}
				 var size = goods_images_list.find('img').size();
				 if(size && $(this).data('hover')) {
						 goods_images_list.find('div:eq(0)').show();
						 if(size > 1) {
								 goods_images_list.data('interval', setInterval($.proxy(function() {
										 var next = $(this).find('div:visible').next();
										 if(!next.length) {
												 next = $(this).find('div:eq(0)');
										 }
										 $(this).find('div').hide();
										 next.show();
								 }, goods_images_list), 1500));
						 }
				 }
		 }, this), 500);
});
$('.prd-image a img').live('mouseleave', function () {
		 var goods_images_list = $(this).closest('.prd-image').find('.goods_images_list');
		 goods_images_list.find('div').hide();
		 $(this).removeData('hover');
		 if(goods_images_list.data('interval')) {
				 clearInterval(goods_images_list.data('interval'));
				 goods_images_list.removeData('interval');
		 }
});
});

так как данный код попросту мешает при отладке. Как удалите данный код - сообщите.

#9 borisovd

borisovd

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

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

Отправлено 23 Ноябрь 2013 - 01:36

удалил код

Просмотр сообщенияСake (23 Ноябрь 2013 - 01:14) писал:

Именно об этой реализации я и писал вам ранее. Для начала вам необходимо удалить код из файла main.js по активной реализации

$(function() {
$('.prd-image a img').live('mouseenter', function () {
		 $(this).data('hover', true).parent().removeAttr('title');
		 setTimeout($.proxy(function() {
			 var goods_images_list = $(this).closest('.prd-image').find('.goods_images_list');
var offset = goods_images_list.width() + goods_images_list.children('div').width()
				 + goods_images_list.offset().left;
if($(window).width() < offset) {
goods_images_list.addClass('view-right');
}
				 var size = goods_images_list.find('img').size();
				 if(size && $(this).data('hover')) {
						 goods_images_list.find('div:eq(0)').show();
						 if(size > 1) {
								 goods_images_list.data('interval', setInterval($.proxy(function() {
										 var next = $(this).find('div:visible').next();
										 if(!next.length) {
												 next = $(this).find('div:eq(0)');
										 }
										 $(this).find('div').hide();
										 next.show();
								 }, goods_images_list), 1500));
						 }
				 }
		 }, this), 500);
});
$('.prd-image a img').live('mouseleave', function () {
		 var goods_images_list = $(this).closest('.prd-image').find('.goods_images_list');
		 goods_images_list.find('div').hide();
		 $(this).removeData('hover');
		 if(goods_images_list.data('interval')) {
				 clearInterval(goods_images_list.data('interval'));
				 goods_images_list.removeData('interval');
		 }
});
});

так как данный код попросту мешает при отладке. Как удалите данный код - сообщите.
Удалил. что дальше?

#10 Сake

Сake

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

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

Отправлено 23 Ноябрь 2013 - 02:59

Далее найдите в файле стилей main.css

.goodsListItemImage {
	height: 100px;
	margin-top: 1em;
}

и замените на

.goodsListItemImage {
	height: 150px;
	margin-top: 1em;
	overflow: hidden;
	position: relative;
}

далее добавьте

.goodsListItemBlockSlidePrev,
.goodsListItemBlockSlideNext {
  background: #FFFFFF;
  border: 1px solid;
  border-radius: 0 20px 20px 0;
  content: "12";
  cursor: pointer;
  font-size: 20px;
  font-weight: bold;
  height: 40px;
  left: 0;
  line-height: 40px;
  margin-top: -20px;
  padding-left: 2px;
  position: absolute;
  text-align: left;
  top: 50%;
  width: 24px;
  display: none;
}
.goodsListItemBlockSlideNext {
	border-radius: 20px 0 0 20px;
	left: inherit;
	right: 0;
}
.goodsListItemImage:hover .goodsListItemBlockSlidePrev,
.goodsListItemImage:hover .goodsListItemBlockSlideNext {
	display: block;
}

далее в шаблоне "Товары" найдите и удалите множественные переносы

<br><br><br><br>

после в файл main.js добавьте

function goodsListItemBlockSlide() {
  $('.goodsListItemBlock .goodsListItemImage:not(.slide)').each(function() {
	 var image = $(this).find('.goods_images_list > div:eq(0)')
	 .addClass('active').find('img').attr('src');
	 $(this).find('.prd-image > a img').attr('src', image);
	 $(this).addClass('slide')
	 .append($('<div class="goodsListItemBlockSlidePrev">').html('&#9668;')
	 .click(function() {
	   var active = $(this).parent().find('.goods_images_list > div.active').removeClass('active');
	   if(active.prev().length) {
		 var slide = active.prev().addClass('active').find('img');
		 $(this).parent().find('.prd-image > a img').attr('src', slide.attr('src'));
	   }
	   else {
		 var slide = $(this).parent().find('.goods_images_list > div:last').addClass('active').find('img');
		 $(this).parent().find('.prd-image > a img').attr('src', slide.attr('src'));
	   }
	 }))
	 .append($('<div class="goodsListItemBlockSlideNext">').html('&#9658;')
	 .click(function() {
	   var active = $(this).parent().find('.goods_images_list > div.active').removeClass('active');
	   if(active.next().length) {
		 var slide = active.next().addClass('active').find('img');
		 $(this).parent().find('.prd-image > a img').attr('src', slide.attr('src'));
	   }
	   else {
		 var slide = $(this).parent().find('.goods_images_list > div:first').addClass('active').find('img');
		 $(this).parent().find('.prd-image > a img').attr('src', slide.attr('src'));
	   }
	 }));
  });
}
$(function() {
  if($('.goodsListItemBlock .goods_images_list img').length) {
	 goodsListItemBlockSlide();
  }
});


#11 borisovd

borisovd

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

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

Отправлено 23 Ноябрь 2013 - 05:23

Все супер!) Спасибо вам огромное!)

#12 borisovd

borisovd

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

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

Отправлено 23 Ноябрь 2013 - 05:30

когда много раз нажимаешь на стрелочки то появляется выделение объекта, можно как нибудь запретить выдельть его?
Попробовал это
document.body.onmousedown = function() {return false};
но не помогло...

#13 borisovd

borisovd

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

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

Отправлено 24 Ноябрь 2013 - 13:35

и еще проблема что при нажатие на кнопку показать еще, то перестает раьотать функция на другой станнице

#14 Сake

Сake

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

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

Отправлено 26 Ноябрь 2013 - 04:55

Добавьте в файл стилей main.css

.goodsListItemBlockSlideNext::selection {
  background: transparent;
}
.goodsListItemBlockSlideNext::-moz-selection {
  background: transparent;
}

далее в файле main.js найдите

$(nav).html($(html).find(nav).first().html());

и замените на

$(nav).html($(html).find(nav).first().html());
goodsListItemBlockSlide();


#15 borisovd

borisovd

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

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

Отправлено 26 Ноябрь 2013 - 05:37

Все супер, только все равно выделяет уже по краям) если можно это убрать будет замечательно:)

#16 Сake

Сake

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

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

Отправлено 27 Ноябрь 2013 - 02:45

Совсем забыл по левую стрелку. Добавьте в файл стилей дополнительный класс

.goodsListItemBlockSlidePrev::selection {
  background: transparent;
}
.goodsListItemBlockSlidePrev::-moz-selection {
  background: transparent;
}


#17 borisovd

borisovd

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

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

Отправлено 27 Ноябрь 2013 - 10:09

а вертикальные полосы по краям можно тоже убрать? а то их выделяет и не очень смотрится(

#18 Сake

Сake

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

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

Отправлено 28 Ноябрь 2013 - 05:01

Не совсем понимаю о каких полосах вы говорите. Пожалуйста, приведите пример в виде скриншота. Если данное поведение наблюдается только в определенном браузере, то так же укажите название и версию вашего браузера.

#19 borisovd

borisovd

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

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

Отправлено 28 Ноябрь 2013 - 11:15

Вот эти полосы

Прикрепленные изображения

  • Untitled-1.jpg


#20 Koderhan

Koderhan

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

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

Отправлено 28 Ноябрь 2013 - 15:22

Просмотр сообщенияborisovd (28 Ноябрь 2013 - 11:15) писал:

Вот эти полосы

Панель администратора, "Сайт"->"Редактор шаблонов".
В файле "main.css".
Найти код:
.prd-image {
position: relative;
}
Заменить:
.prd-image {
position: relative;
background: white;
}





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

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