PageSourceSearch

https://smartfarming.ru/local/templates/main/components/bitrix/cat…/products/script.js?17567830516532

js smartfarming.ru collected 2026-10-08 09:44:49 UTC 6,532 bytes, 239 lines download raw bytes

1	$(document).ready(function () {
2		const targetCode = window.PRODUCT_DATA_CODE;
3
4		// === 1. Инициализируем ВСЕ слайдеры (s5, s6, s7) ===
5		const sliders = ['.s5', '.s6', '.s7'];
6		sliders.forEach(cls => {
7			const $slider = $(`.slider${cls} .wrap`);
8			const sliderId = cls.replace('.', ''); // s5, s6, s7
9
10			if (!$slider.hasClass('slick-initialized')) {
11				$slider.slick({
12					infinite: true,
13					dots: true,
14					vertical: false,
15					slidesToShow: 1,
16					autoplay: false,
17					fade: true,
18					initialSlide: 0,
19					prevArrow: `.slider.${sliderId} [href='#btn-prev']`,
20					nextArrow: `.slider.${sliderId} [href='#btn-next']`,
21					responsive: [
22						{ breakpoint: 768, settings: { slidesToShow: 1 } },
23						{ breakpoint: 480, settings: { slidesToShow: 1 } }
24					]
25				});
26
27				$slider.on('afterChange', function(event, slick, currentSlideIndex) {
28					const $currentSlide = $(this).find('.slide').eq(currentSlideIndex);
29					const code = $currentSlide.data('code');
30
31					if (!code) return;
32
33					const basePath = '/products/';
34					const newPath = basePath + code + '/';
35					const hash = '#section3';
36					const newUrl = newPath + hash;
37					history.replaceState(null, '', newUrl);
38				});
39			}
40		});
41
42		// Если нет кода — выходим (оставляем активным первый таб по умолчанию)
43	
44		if (!targetCode) return;
45
46		// === 2. Ищем слайд с data-code ===
47		const $slide = $(`.slide[data-code="${targetCode}"]`);
48		if (!$slide.length) {
49			return;
50		}
51
52		// === 3. Определяем, в каком слайдере он находится ===
53		const $slider = $slide.closest('.slider'); // .slider.s6
54		const sliderClass = $slider.attr('class').match(/s[5-7]/);
55		if (!sliderClass) return;
56
57		const sliderId = sliderClass[0]; // s5, s6, s7
58
59		// === 4. Активируем нужный таб ===
60		const $tab = $(`.tabs a[href="#slider_${sliderId}"]`);
61		$('.tabs a').removeClass('select');
62		$tab.addClass('select');
63
64		// === 5. Показываем нужный слайдер, скрываем остальные ===
65		$('.slider').addClass('hide');
66		$slider.removeClass('hide');
67
68		// === 6. Находим индекс слайда в его слайдере ===
69		const $wrap = $slider.find('.wrap');
70		const slideIndex = $wrap.find('.slide').index($slide);
71
72		// === 7. Пролистываем к нужному слайду ===
73	    $wrap.slick('slickGoTo', slideIndex);
74	});
75
76$(function(){
77	// $('.slider.s5 .wrap').slick({
78	// 	infinite: true,
79	// 	dots: true,
80	// 	vertical: false,
81	// 	verticalSwiping: false,
82	// 	slidesToShow: 1,
83	// 	autoplay: false,
84	// 	fade: true,
85	// 	prevArrow: ".slider.s5 [href='#btn-prev']",
86	// 	nextArrow: ".slider.s5 [href='#btn-next']",
87	// 	responsive: [
88	// 		{
89	// 			breakpoint: 768,
90	// 			settings: {
91	// 				slidesToShow: 1,
92	// 			}
93	// 		},
94	// 		{
95	// 			breakpoint: 480,
96	// 			settings: {
97	// 				slidesToShow: 1,
98	// 			}
99	// 		}
100	// 	]
101	// });
102
103	// $('.slider.s6 .wrap').slick({
104	// 	infinite: true,
105	// 	dots: true,
106	// 	vertical: false,
107	// 	verticalSwiping: false,
108	// 	slidesToShow: 1,
109	// 	autoplay: false,
110	// 	fade: true,
111	// 	prevArrow: ".slider.s6 [href='#btn-prev']",
112	// 	nextArrow: ".slider.s6 [href='#btn-next']",
113	// 	responsive: [
114	// 		{
115	// 			breakpoint: 768,
116	// 			settings: {
117	// 				slidesToShow: 1,
118	// 			}
119	// 		},
120	// 		{
121	// 			breakpoint: 480,
122	// 			settings: {
123	// 				slidesToShow: 1,
124	// 			}
125	// 		}
126	// 	]
127	// });
128
129	// $('.slider.s7 .wrap').slick({
130	// 	infinite: true,
131	// 	dots: true,
132	// 	vertical: false,
133	// 	verticalSwiping: false,
134	// 	slidesToShow: 1,
135	// 	autoplay: false,
136	// 	fade: true,
137	// 	prevArrow: ".slider.s7 [href='#btn-prev']",
138	// 	nextArrow: ".slider.s7 [href='#btn-next']",
139	// 	responsive: [
140	// 		{
141	// 			breakpoint: 768,
142	// 			settings: {
143	// 				slidesToShow: 1,
144	// 			}
145	// 		},
146	// 		{
147	// 			breakpoint: 480,
148	// 			settings: {
149	// 				slidesToShow: 1,
150	// 			}
151	// 		}
152	// 	]
153	// });
154
155	$("[href='#ico_more_open']",".slider.s5, .slider.s6, .slider.s7").on('click', function() {
156		_this = $(this);
157		_this.parents("section").toggleClass('ico_more_open');
158		_this.parents(".slider").toggleClass('ico_more_open');
159		_this.parents(".ico_more").toggleClass('ico_more_open');
160	});
161	$("[href='#product_open']",".slider.s5, .slider.s6, .slider.s7").on('click', function() {
162		_this = $(this);
163		_this.parents("section").toggleClass('product_open');
164		_this.parents(".slider").toggleClass('product_open');
165		_this.parents(".slide").toggleClass('product_open');
166	});
167	$("[href='#tabs_more']").on('click', function() {
168		$(this).parents(".tabs").toggleClass('open');
169	});
170	$("[href='#cart_open']",".slider.s5, .slider.s6, .slider.s7").on('click', function() {
171		_this = $(this);
172		$('header').toggleClass('cart_open');
173	});
174
175
176	// При нажатии +/- изменеям значение в input'е
177	$('.slider form a[href^="#"]').on('click', function() {
178		var thisButton = $(this)
179		var thisInput = thisButton.siblings("div.number").find("input[name=count]")
180		var amount = thisButton.attr("href") == "#minus" ? -1
181			: thisButton.attr("href") == "#plus" ? +1 : 0
182		var value = parseInt(thisInput.val())
183		value += amount
184		value = value < 0 ? 0 : (value > 9999 ? 9999 : value)
185		thisInput.val(value);
186	})
187
188	// Не даем отослать форму по ENTER
189	$('.slider form input[name=count]').keypress(function (event) {
190		if (event.keyCode === 10 || event.keyCode === 13) {
191			event.preventDefault();
192		}
193	})
194
195	$(function() {
196		$(".slider form a[href='#to_cart']").click( function() {
197			event.preventDefault(); // ????
198
199			var thisButton = $(this);
200			var thisInput = thisButton.siblings("div.number").find("input[name=count]")
201			var id = parseInt(thisButton.data('item-id'));
202			var url = thisButton.data('ajax-url');
203			var amount = thisInput.val();
204
205			if (amount <= 0)
206				return;
207
208			$.ajax({
209				url:  url,
210				type: 'POST',
211				data: {
212					id:     id,
213					amount: amount,
214					action: 'change',
215				}
216			}).done(function(data) {
217				var data = $.parseJSON(data);
218
219				if (data.status == 'ok') {
220					// Обновляем корзину
221					BX.onCustomEvent('OnBasketChange');
222					// После обновления корзины на беке, открываем ее на фронте
223					BX.onCustomEvent('OnBasketToggle');
224				}
225			})
226			.fail(function(a) {
227				console.log("error", a);
228			})
229			.always(function(a) {
230				// console.log("complete", a);
231			});
232
233		});
234	});
235
236
237
238
239});

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.