├── AjaxSearch.md
├── Cart.md
├── Compare.md
├── EventBus.md
├── InSalesUI.md
├── Products.md
├── README.md
├── Shop.md
├── Template.md
└── ajaxAPI.md
/AjaxSearch.md:
--------------------------------------------------------------------------------
1 | # Живой поиск по сайту
2 |
3 |
4 |
5 | :arrow_left: Назад
6 |
7 |
8 | ## Интерфейс
9 |
10 | > Для быстрого создания интерфейсов в commonjs предусмотрены готовые обработчики форм.
11 |
12 | > Обработчики ссылаются на data-атрибуты. В data-атрибуты пробрасывается информация из liquid.
13 |
14 |
15 | ### Назначение атрибутов
16 |
17 |
18 | Подробнее
19 |
20 | |Атрибут|Назначение|Расположение|
21 | |-|-|-|
22 | |data-search-field|Поле для ввода поискового запроса|Тег form|
23 | |data-search-result|Блок в который записывается результат поиска|Тег form|
24 | |[name="lang"]|Текущий язык|Тег form|
25 |
26 |
27 | ```twig
28 |
34 | ```
35 |
36 |
37 |
38 | ---
39 |
40 | ### Разметка для поиска
41 |
42 |
43 | Подробнее
44 |
45 | ```twig
46 |
52 | ```
53 |
54 |
55 | ---
56 |
57 | ## Методы
58 |
59 | ### :hammer: setConfig
60 |
61 | > Обновление настроек
62 |
63 |
64 | :memo: Пример
65 |
66 | ```js
67 | /**
68 | * @param {number} letters с какого символа начинать поиск
69 | * @param {number} delay задержка между запросами
70 | */
71 |
72 | AjaxSearch.setConfig({
73 | letters: 3,
74 | delay: 300
75 | });
76 | ```
77 |
78 |
79 |
80 | :loudspeaker: События
81 |
82 | > События класса EventBus
83 |
84 | * before:insales:search - Событие срабатывает перед любым взаимодействием с компонетом поиск
85 | * update:insales:search - Событие срабатывает после обновления результатов поиска
86 | * always:insales:search - Событие срабатывает после любого взаимодействия с компонетом поиск
87 |
88 |
89 | ```js
90 | EventBus.subscribe('update:insales:search', function (data) {
91 | console.log(data);
92 | });
93 | ```
94 |
95 |
96 |
97 |
98 |
99 | :arrow_left: Назад
100 |
101 |
--------------------------------------------------------------------------------
/Cart.md:
--------------------------------------------------------------------------------
1 | # Корзина
2 |
3 |
4 |
5 | :arrow_left: Назад
6 |
7 |
8 |
9 | - [Интерфейс](https://github.com/liquid-hub/insales-common-js-v2-api/blob/master/Cart.md#%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81)
10 | - [Назначение-атрибутов](https://github.com/liquid-hub/insales-common-js-v2-api/blob/master/Cart.md#Назначение-атрибутов)
11 | - [Разметка-товара](https://github.com/liquid-hub/insales-common-js-v2-api/blob/master/Cart.md#Разметка-товара)
12 | - [Разметка-корзины](https://github.com/liquid-hub/insales-common-js-v2-api/blob/master/Cart.md#Разметка-корзины)
13 | - [Методы](https://github.com/liquid-hub/insales-common-js-v2-api/blob/master/Cart.md#Методы)
14 | - [add](https://github.com/liquid-hub/insales-common-js-v2-api/blob/master/Cart.md#hammer-add)
15 | - [delete](https://github.com/liquid-hub/insales-common-js-v2-api/blob/master/Cart.md#hammer-delete)
16 | - [clear](https://github.com/liquid-hub/insales-common-js-v2-api/blob/master/Cart.md#hammer-clear)
17 | - [forceUpdate](https://github.com/liquid-hub/insales-common-js-v2-api/blob/master/Cart.md#hammer-forceUpdate)
18 | - [remove](https://github.com/liquid-hub/insales-common-js-v2-api/blob/master/Cart.md#hammer-remove)
19 | - [set](https://github.com/liquid-hub/insales-common-js-v2-api/blob/master/Cart.md#hammer-set)
20 | - [setCoupon](https://github.com/liquid-hub/insales-common-js-v2-api/blob/master/Cart.md#hammer-setcoupon)
21 | - [order.get](https://github.com/liquid-hub/insales-common-js-v2-api/blob/master/Cart.md#hammer-orderget)
22 | - [order.getItemByID](https://github.com/liquid-hub/insales-common-js-v2-api/blob/master/Cart.md#hammer-ordergetitembyid)
23 |
24 |
25 | ## Интерфейс
26 |
27 | > Для быстрого создания интерфейсов в commonjs предусмотрены готовые обработчики форм.
28 |
29 | > Обработчики ссылаются на data-атрибуты. В data-атрибуты пробрасывается информация из liquid.
30 |
31 | ### Назначение атрибутов
32 |
33 | | Атрибут | Назначение | Расположение |
34 | |----------------------|---------------------------------------------------------------------------------|-----------------------------------------------------------|
35 | | data-cart-form | Обязательный атрибут для тега form | Тег form для корзины |
36 | | data-item-id | Обязательный атрибут для позиций в корзине. Атрибут принимает id позиции. | Обертка для позиции в корзине |
37 | | data-product-id | Обязательный атрибут для инициализации товара. В атрибут передаётся id товара. | Обертка для позиции в корзине |
38 | | data-item-delete | Удаление из корзины | Обертка для позиции в корзине |
39 | | data-cart-update | Обновление корзины | Внутри обёртки с атрибутом data-cart-form |
40 | | data-cart-discounts-ajax | Информацию о скидках (В форму корзины нужно добавить `data-reload-on-coupon="false"`) | Внутри обёртки с атрибутом data-cart-form |
41 | | data-reload-on-coupon | Перезагрузка страницы после применения купона. Чтобы отключить перезагрузку, нужно указать `false` в качестве значения | Форма с атрибутом data-cart-form |
42 | | data-cart-clear | Очищение корзины | Внутри обёртки с атрибутом data-cart-form |
43 | | data-coupon-submit | Отправка купона | Внутри обёртки с атрибутом data-cart-form |
44 | | data-quantity | Обязательный атрибут для обёртки кнопок изменения колличества и инпута quantity | Внутри обертки с атрибутом data-product-id и data-item-id |
45 | | data-quantity-change | Атрибут для кнопок +/-, принимает число | Внутри обёртки с атрибутом data-quantity |
46 |
47 |
48 | ---
49 |
50 | ### Разметка товара
51 |
52 |
53 | Подробнее
54 |
55 | ```twig
56 |
76 | ```
77 |
78 |
79 |
80 | ---
81 |
82 | ### Разметка корзины
83 |
84 |
85 | Подробнее
86 |
87 | ```twig
88 |
113 | ```
114 |
115 |
116 | ---
117 |
118 | ## Методы
119 |
120 | > Методы класса `Cart`
121 |
122 | ### :hammer: add
123 |
124 | > Добавить в корзину заданное кол-во товаров
125 |
126 |
127 | :memo: Параметры
128 |
129 | ```js
130 | /**
131 | * @param {Object} items объект с параметрами variant_id: quantity
132 | * @param {Object} comments комментарий к позиции заказа. Ключ id варианта, значение текст комментария
133 | * @param {string} coupon купон
134 | */
135 | {
136 | items: {
137 | 123456: 2,
138 | 123457: 1
139 | },
140 | comments: {
141 | 123457: 'Мой комментарий'
142 | },
143 | coupon: 'Мой купон'
144 | }
145 | ```
146 |
147 |
148 | :computer: Пример
149 |
150 | ```js
151 | Cart.add({
152 | items: {
153 | 123456: 2,
154 | 123457: 1
155 | },
156 | comments: {
157 | 123457: 'Мой комментарий'
158 | },
159 | coupon: 'Мой купон'
160 | });
161 | ```
162 |
163 |
164 | :loudspeaker: События
165 |
166 | > События класса EventBus
167 |
168 | * before:insales:cart
169 | * add_items:insales:cart
170 | * update_items:insales:cart
171 | * always:insales:cart
172 |
173 |
174 | ```js
175 | EventBus.subscribe('add_items:insales:cart', function (data) {
176 | console.log('Товар добавлен');
177 | });
178 | ```
179 |
180 |
181 | ---
182 |
183 | ### :hammer: delete
184 |
185 | > Удалить позиции из корзины
186 |
187 |
188 | :memo: Параметры
189 |
190 | ```js
191 | /**
192 | * @param {Array} items массив id вариантов к удалению
193 | */
194 | Cart.delete({
195 | items: [160549240, 160549242]
196 | })
197 | ```
198 |
199 |
200 | :computer: Пример
201 |
202 | ```js
203 | Cart.delete({
204 | items: [160549240, 160549242]
205 | })
206 | ```
207 |
208 |
209 | :loudspeaker: События
210 |
211 | > События класса EventBus
212 |
213 | * before:insales:cart
214 | * delete_items:insales:cart
215 | * update_items:insales:cart
216 | * always:insales:cart
217 |
218 |
219 | ```js
220 | EventBus.subscribe('delete_items:insales:cart', function (data) {
221 | console.log('Товары удалены');
222 | });
223 | ```
224 |
225 |
226 | ---
227 |
228 | ### :hammer: clear
229 |
230 | > Полностью очистить корзину
231 |
232 |
233 |
234 | :computer: Пример
235 |
236 | ```js
237 | Cart.clear();
238 | ```
239 |
240 |
241 | :loudspeaker: События
242 |
243 | > События класса EventBus
244 |
245 | * before:insales:cart
246 | * clear_items:insales:cart
247 | * update_items:insales:cart
248 | * always:insales:cart
249 |
250 |
251 | ```js
252 | EventBus.subscribe('clear_items:insales:cart', function (data) {
253 | console.log('Корзина очищена');
254 | });
255 | ```
256 |
257 |
258 | ---
259 |
260 | ### :hammer: forceUpdate
261 |
262 | > Принудительно обновить данные корзины
263 |
264 |
265 |
266 | :computer: Пример
267 |
268 | ```js
269 | Cart.forceUpdate()
270 | ```
271 |
272 |
273 | ---
274 |
275 | ### :hammer: remove
276 |
277 | > Удалить из корзины заданное кол-во товаров
278 |
279 |
280 | :memo: Параметры
281 |
282 | ```js
283 | /**
284 | * @param {Array} items объект с параметрами variant_id: quantity
285 | */
286 | Cart.remove({
287 | items: {
288 | 138231315: 1,
289 | 138231316: 1
290 | }
291 | })
292 | ```
293 |
294 |
295 | :computer: Пример
296 |
297 | ```js
298 | Cart.remove({
299 | items: {
300 | 138231315: 1,
301 | 138231316: 1
302 | }
303 | })
304 | ```
305 |
306 |
307 | :loudspeaker: События
308 |
309 | > События класса EventBus
310 |
311 | * before:insales:cart
312 | * remove_items:insales:cart
313 | * update_items:insales:cart
314 | * always:insales:cart
315 |
316 |
317 | ```js
318 | EventBus.subscribe('remove_items:insales:cart', function (data) {
319 | console.log('Товары удалены');
320 | });
321 | ```
322 |
323 |
324 | ---
325 |
326 | ### :hammer: set
327 |
328 | > Устанавливает кол-во товаров в корзине для каждой позиции
329 |
330 |
331 | :memo: Параметры
332 |
333 | ```js
334 | /**
335 | * @param {Array} items объект с параметрами variant_id: quantity
336 | */
337 | Cart.set({
338 | items: {
339 | 138231315: 1,
340 | 138231316: 1
341 | }
342 | })
343 | ```
344 |
345 |
346 | :computer: Пример
347 |
348 | ```js
349 | Cart.set({
350 | items: {
351 | 138231315: 1,
352 | 138231316: 1
353 | }
354 | })
355 | ```
356 |
357 |
358 | :loudspeaker: События
359 |
360 | > События класса EventBus
361 |
362 | * before:insales:cart
363 | * set_items:insales:cart
364 | * update_items:insales:cart
365 | * always:insales:cart
366 |
367 |
368 | ```js
369 | EventBus.subscribe('set_items:insales:cart', function (data) {
370 | console.log('Корзина обновлена');
371 | });
372 | ```
373 |
374 |
375 | ---
376 |
377 | ### :hammer: setCoupon
378 |
379 | > Устанавливает купон
380 |
381 |
382 | :memo: Параметры
383 |
384 | ```js
385 | /**
386 | * @param {string} coupon код купона
387 | */
388 | Cart.setCoupon({
389 | coupon: 'Мой купон'
390 | })
391 | ```
392 |
393 |
394 | :computer: Пример
395 |
396 | ```js
397 | Cart.setCoupon({
398 | coupon: 'Мой купон'
399 | })
400 | ```
401 |
402 |
403 | :loudspeaker: События
404 |
405 | > События класса EventBus
406 |
407 | * before:insales:cart
408 | * set_coupon:insales:cart
409 | * update_items:insales:cart
410 | * always:insales:cart
411 |
412 |
413 | ```js
414 | EventBus.subscribe('set_coupon:insales:cart', function (data) {
415 | console.log('Добавлен купон');
416 | });
417 | ```
418 |
419 |
420 | ---
421 |
422 | ### :hammer: order.get
423 |
424 | > Получить состав корзины
425 |
426 |
427 | :computer: Пример
428 |
429 | ```js
430 | var order = Cart.order.get();
431 | console.log(order);
432 | ```
433 |
434 |
435 | ---
436 |
437 | ### :hammer: order.getItemByID
438 |
439 | > Получить информацию о позиции по id
440 |
441 |
442 | :computer: Пример
443 |
444 | ```js
445 | var item = Cart.order.getItemByID(138231315);
446 | console.log(item);
447 | ```
448 |
449 |
450 |
451 |
452 |
453 | :arrow_left: Назад
454 |
455 |
--------------------------------------------------------------------------------
/Compare.md:
--------------------------------------------------------------------------------
1 | # Сравнение
2 |
3 |
4 |
5 | :arrow_left: Назад
6 |
7 |
8 | - [Методы](https://github.com/liquid-hub/insales-common-js-v2-api/blob/master/Compare.md#Методы)
9 | - [add](https://github.com/liquid-hub/insales-common-js-v2-api/blob/master/Compare.md#hammer-add)
10 | - [remove](https://github.com/liquid-hub/insales-common-js-v2-api/blob/master/Compare.md#hammer-remove)
11 | - [getCompare](https://github.com/liquid-hub/insales-common-js-v2-api/blob/master/Compare.md#hammer-getcompare)
12 | - [update](https://github.com/liquid-hub/insales-common-js-v2-api/blob/master/Compare.md#hammer-update)
13 |
14 | ## Интерфейс
15 |
16 | > Для быстрого создания интерфейсов в commonjs предусмотрены готовые обработчики форм.
17 |
18 | > Обработчики ссылаются на data-атрибуты. В data-атрибуты пробрасывается информация из liquid.
19 |
20 | ### Кнопки добавить/удалить из сравнения
21 |
22 | ```html
23 |
24 | Добавить товар в сравнение
25 |
26 |
27 | Удалить из сравнения
28 |
29 | ```
30 |
31 | ---
32 |
33 | ## Методы
34 |
35 | > Методы класса `Compare`
36 |
37 | ### :hammer: add
38 |
39 | > Добавить товар в сравнение
40 |
41 |
42 | :memo: Параметры
43 |
44 | ```js
45 | /**
46 | * @param {number} item id товара
47 | */
48 | Compare.add({
49 | item: 123456
50 | });
51 | ```
52 |
53 |
54 | :computer: Пример
55 |
56 | ```js
57 | Compare.add({
58 | item: 123456
59 | });
60 | ```
61 |
62 |
63 | :loudspeaker: События
64 |
65 | > События класса EventBus
66 |
67 | * before:insales:compares
68 | * add_items:insales:compares
69 | * update_items:insales:compares
70 | * always:insales:compares
71 |
72 |
73 | ```js
74 | EventBus.subscribe('add_item:insales:compares', function (data) {
75 | console.log('Товар добавлен в сравнение');
76 | });
77 | ```
78 |
79 |
80 | ---
81 |
82 | ### :hammer: remove
83 |
84 | > Удалить товар из сравнение
85 |
86 |
87 | :memo: Параметры
88 |
89 | ```js
90 | /**
91 | * @param {number} item id товара
92 | */
93 | Compare.remove({
94 | item: 123456
95 | });
96 | ```
97 |
98 |
99 | :computer: Пример
100 |
101 | ```js
102 | Compare.remove({
103 | item: 123456
104 | });
105 | ```
106 |
107 |
108 | :loudspeaker: События
109 |
110 | > События класса EventBus
111 |
112 | * before:insales:compares
113 | * remove_item:insales:compares
114 | * update_items:insales:compares
115 | * always:insales:compares
116 |
117 |
118 | ```js
119 | EventBus.subscribe('add_item:insales:compares', function (data) {
120 | console.log('Товар добавлен в сравнение');
121 | });
122 | ```
123 |
124 |
125 | ---
126 |
127 | ### :hammer: getCompare
128 |
129 | > Получить текущее состояние сравнения
130 |
131 |
132 | :computer: Пример
133 |
134 | ```js
135 | var compareState = Compare.getCompare();
136 | console.log(compareState);
137 | ```
138 |
139 |
140 | ---
141 |
142 | ### :hammer: update
143 |
144 | > Обновить состояние сравнения
145 |
146 |
147 | :computer: Пример
148 |
149 | ```js
150 | Compare.update();
151 | ```
152 |
153 |
154 | ---
155 |
156 |
157 |
158 |
159 |
160 | :arrow_left: Назад
161 |
162 |
--------------------------------------------------------------------------------
/EventBus.md:
--------------------------------------------------------------------------------
1 | # EventBus
2 |
3 |
4 |
5 | :arrow_left: Назад
6 |
7 |
8 | EventBus (шина событий) предназначена для простого взаимодействия базового функционала с остальными скриптами, не привязываясь при этом к верстке и вспомогательным объектам.
9 |
10 | Работает по принципу Pub/Sub (Издатель/Подписчик) и построена на Deferred, что позволяет:
11 |
12 | * привязать к одному событию (Издателю) несколько обработчиков (Подписчиков)
13 | * обработчики событий сработают, даже если событие произошло раньше того, как мы к нему привязали обработчик.
14 | * не важен порядок объявления Издателя и Подпсичиков
15 |
16 | Работа с шиной производится через объект EventBus.
17 |
18 | ## Методы
19 |
20 | - [subscribe](https://github.com/liquid-hub/insales-common-js-v2-api/blob/master/EventBus.md#hammer-subscribe)
21 | - [publish](https://github.com/liquid-hub/insales-common-js-v2-api/blob/master/EventBus.md#hammer-publish)
22 | - [logger.add](https://github.com/liquid-hub/insales-common-js-v2-api/blob/master/EventBus.md#hammer-loggeradd)
23 |
24 | ### :hammer: subscribe
25 |
26 | > Подписаться на событие
27 |
28 |
29 | :memo: Параметры
30 |
31 | В данных подписчика всегда доступен объект **action**, он содержит свойство method, а также дополнительные сведения, взависимости от события.
32 | В дополнительных свойствах объекта **action** могут быть:
33 |
34 | * Ссылка на jQuery объект DOM узла с которым произошло взаимодействие
35 | * Обновленные данные компонента (Cart, Products и т.д.)
36 | * Остальное смотреть через console.log или EventBus.logger
37 |
38 | ```js
39 | /**
40 | * @param {String} eventId название события
41 | * @param {function} callback функция обработчик события
42 | */
43 | ```
44 |
45 |
46 | :computer: Пример
47 |
48 | ```js
49 | EventBus.subscribe('event_id', function (data) {
50 | console.log(data)
51 | });
52 |
53 | EventBus.subscribe('add_items:insales:cart', function (data) {
54 | console.log('Товар добавлен');
55 | });
56 | ```
57 |
58 |
59 | ---
60 |
61 | ### :hammer: publish
62 |
63 | > Публикация события
64 |
65 |
66 | :memo: Параметры
67 |
68 | ```js
69 | /**
70 | * @param {String} eventId название события
71 | * @param {Object} data любой тип данных, преимущественно `Object`
72 | */
73 | ```
74 |
75 |
76 | :computer: Пример
77 |
78 | ```js
79 | EventBus.publish('event_id', {
80 | isTest: true,
81 | title: 'Test',
82 | status: 'ok'
83 | });
84 | ```
85 |
86 |
87 | ---
88 |
89 | ### :hammer: logger.add
90 |
91 | > Добавление логера для компонента
92 |
93 |
94 | :memo: Параметры
95 |
96 | Список компонентов:
97 |
98 | - cart
99 | - product
100 | - search
101 | - compares
102 |
103 | ```js
104 | /**
105 | * @param {String} componentTitle название компонента
106 | */
107 | EventBus.logger.add('cart')
108 | ```
109 |
110 |
111 |
112 | :computer: Пример
113 |
114 | ```js
115 | EventBus.logger.add('cart')
116 | EventBus.logger.add('product')
117 | ```
118 |
119 |
120 |
121 |
122 |
123 | :arrow_left: Назад
124 |
125 |
--------------------------------------------------------------------------------
/InSalesUI.md:
--------------------------------------------------------------------------------
1 | # Методы для работы с UI
2 |
3 |
4 |
5 | :arrow_left: Назад
6 |
7 |
8 | ### :hammer: InSalesUI.initAjaxInstance
9 |
10 | > Инициализация формы корзины
11 |
12 |
13 | :memo: Параметры
14 |
15 | ```js
16 | /*
17 | * @param {jquery} jquery объект
18 | */
19 |
20 | InSalesUI.initAjaxInstance($(".js-dynamic_basket"));
21 | ```
22 |
23 |
24 | :computer: Пример
25 |
26 | ```js
27 | EventBus.subscribe("update_items:insales:cart", function(cart) {
28 | $(".js-dynamic_basket").html(Template.render(cart, "dynamic_basket"));
29 | InSalesUI.initAjaxInstance($(".js-dynamic_basket"));
30 | });
31 | ```
32 |
33 | ```html
34 |
35 |
36 |
37 |
38 |
109 | ```
110 |
111 |
112 | ---
113 |
114 | ### :hammer: InSalesUI.bindUpdateCart
115 |
116 | > Обновление слушателей quantity в форме корзины
117 |
--------------------------------------------------------------------------------
/Products.md:
--------------------------------------------------------------------------------
1 | # Товар
2 |
3 |
4 |
5 | :arrow_left: Назад
6 |
7 |
8 | - [Интерфейс](https://github.com/liquid-hub/insales-common-js-v2-api/blob/master/Products.md#Интерфейс)
9 | - [Назначение атрибутов](https://github.com/liquid-hub/insales-common-js-v2-api/blob/master/Products.md#Назначение-атрибутов)
10 | - [Разметка товара](https://github.com/liquid-hub/insales-common-js-v2-api/blob/master/Products.md#Разметка-товара)
11 | - [События](https://github.com/liquid-hub/insales-common-js-v2-api/blob/master/Products.md#События)
12 | - [Селектор модификаций](https://github.com/liquid-hub/insales-common-js-v2-api/blob/master/Products.md#Селектор-модификаций)
13 | - [Привязка шаблона модификации к опции](https://github.com/liquid-hub/insales-common-js-v2-api/blob/master/Products.md#Привязка-шаблона-модификации-к-опции)
14 | - [Передать изображения для шаблона селектора модификаций](https://github.com/liquid-hub/insales-common-js-v2-api/blob/master/Products.md#Передать-изображения-для-шаблона-селектора-модификаций)
15 | - [Шаблоны для селектора модификаций](https://github.com/liquid-hub/insales-common-js-v2-api/blob/master/Products.md#Шаблоны-для-селектора-модификаций)
16 | - [Методы](https://github.com/liquid-hub/insales-common-js-v2-api/blob/master/Products.md#Методы)
17 | - [get](https://github.com/liquid-hub/insales-common-js-v2-api/blob/master/Products.md#hammer-get)
18 | - [getList](https://github.com/liquid-hub/insales-common-js-v2-api/blob/master/Products.md#hammer-getlist)
19 | - [setConfig](https://github.com/liquid-hub/insales-common-js-v2-api/blob/master/Products.md#hammer-setconfig)
20 | - [getInstance](https://github.com/liquid-hub/insales-common-js-v2-api/blob/master/Products.md#hammer-getinstance)
21 | - [initInstance](https://github.com/liquid-hub/insales-common-js-v2-api/blob/master/Products.md#hammer-initinstance)
22 |
23 |
24 | ## Интерфейс
25 |
26 | > Для быстрого создания интерфейсов в commonjs предусмотрены готовые обработчики форм.
27 |
28 | > Обработчики ссылаются на data-атрибуты. В data-атрибуты пробрасывается информация из liquid.
29 |
30 | ### Назначение атрибутов
31 |
32 | | Атрибут | Назначение | Расположение |
33 | |-----------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------|
34 | | data-product-id | Обязательный атрибут для инициализации товара, принимает id товара | Тег form который является обёрткой для всех полей товара |
35 | |data-product-without-cache| Отключить кеширование информации о данном товаре| Тег с атрибутом data-product-id |
36 | | action | Обязательный атрибут для формы добавления товара в корзину, принимает url корзины. Тег необходим для отправки формы при отключенном JavaScript в браузере | Тег form который является обёрткой для всех полей товара |
37 | | data-product-variants | Обязательный атрибут для вывода Option Selectors | Тег select в котором выведены все модификации товара |
38 | | data-quantity | Обязательный атрибут для обёртки кнопок изменения колличества и инпута quantity | Внутри формы с атрибутом data-product-id |
39 | | data-quantity-change | Атрибут для кнопок +/-, принимает число | Внутри обёртки с атрибутом data-quantity |
40 | | data-item-add | Добавление товара в корзину, для данного атрибута следует использовать тег button\[type="submit"\] | Внутри формы с атрибутом data-product-id |
41 | | name="comment" | Комментарий к позиции заказа, для работы поля с данным атрибутом комментарии к заказам должны быть включены в бэк-офисе | Input\[type="text"\] внутри формы с атрибутом data-product-id |
42 | |data-product-json="{{ product\|json\|escape }}"|Передать данные о товаре через ликвид. Это может ускорить отображение селектора модификаций|Тег form который является обёрткой для всех полей товара|
43 |
44 | Для установки минимального значения в инпуте кол-ва товара укажите атрибут data-min
45 | ```twig
46 |
47 |
48 | -
49 | +
50 |
51 | ```
52 |
53 | ---
54 |
55 | ### Разметка товара
56 |
57 | ```twig
58 |
78 | ```
79 |
80 | ---
81 |
82 | ## События
83 |
84 | | Событие | Описание |
85 | |-----------------------------------|-----------------------------------------------------------------------|
86 | | before:insales:product | Событие срабатывает перед любым взаимодействием с компонетом продукта |
87 | | always:insales:product | Событие срабатывает после любого взаимодействия с компонетом продукта |
88 | | change_quantity:insales:product | Обновление кол-ва в продукте |
89 | | unchange_quantity:insales:product | Если введено кол-во больше доступного |
90 | |overload:quantity:insales:product| Событие срабатывает когда с помощью +/- накликали до максимального значения quantity (Работает если вы используете параметр useMax)|
91 | |max:quantity:insales:product| Cрабатывает всегда когда в инпуте установлено максимальное кол-во, даже при загрузке страницы (Работает если вы используете параметр useMax)|
92 | | update_variant:insales:product | Обновление варианта в продукте |
93 |
94 | ## Селектор модификаций
95 |
96 | ### Привязка шаблона модификации к опции
97 |
98 | > В методе `setConfig` нужно передать объект options в виде `имя опции: id шаблона`
99 |
100 |
101 | Подробнее
102 |
103 | ```js
104 | Products.setConfig({
105 | options: {
106 | 'Цвет': 'option-image',
107 | 'Размер': 'option-radio',
108 | 'Материал': 'option-select',
109 | 'Жесткий диск': 'option-span'
110 | }
111 | });
112 | ```
113 |
114 | Пример шаблона
115 |
116 | ```html
117 |
132 | ```
133 |
134 |
135 | ---
136 |
137 | ### Передать изображения для шаблона селектора модификаций
138 |
139 | > Ссылки формируются в виде `значение свойства + .png | file_url`
140 |
141 |
142 | Подробнее
143 |
144 | ```twig
145 |
167 |
168 |
190 |
191 |
196 | ```
197 |
198 |
199 | ---
200 |
201 | ### Шаблоны для селектора модификаций
202 |
203 |
204 | select
205 |
206 | ```html
207 |
222 | ```
223 |
224 |
225 | span
226 |
227 | ```html
228 |
243 | ```
244 |
245 |
246 | radio
247 |
248 | ```html
249 |
270 | ```
271 |
272 |
273 | image
274 |
275 | ```html
276 |
298 | ```
299 |
300 |
301 |
302 | preview
303 |
304 | ```html
305 |
325 | ```
326 |
327 |
328 | ---
329 |
330 | ## Методы
331 |
332 | > Методы класса `Products`
333 |
334 | ### :hammer: get
335 |
336 | > Получить объект с информацией о товаре
337 |
338 |
339 | :memo: Параметры
340 |
341 | ```js
342 | /**
343 | * @param {number} id id товара
344 | * @return {Deferred}
345 | */
346 | Products.get(123456)
347 | .done(function (onDone) { console.log('onDone', onDone) })
348 | .fail(function (onFail) { console.log('onFail', onFail) });
349 | ```
350 |
351 |
352 | :computer: Пример
353 |
354 | ```js
355 | Products.get(123456)
356 | .done(function (onDone) { console.log('onDone', onDone) })
357 | .fail(function (onFail) { console.log('onFail', onFail) });
358 | ```
359 |
360 |
361 | ---
362 |
363 | ### :hammer: getList
364 |
365 | > Получение списка товаров
366 |
367 |
368 | :memo: Параметры
369 |
370 | ```js
371 | /**
372 | * @param {Array} idList - массив, состоящий из id товаров
373 | * @return {Deferred}
374 | */
375 | Products.getList([123456, 123455, 1234454, 123458])
376 | .done(function (onDone) { console.log('onDone', onDone) })
377 | .fail(function (onFail) { console.log('onFail', onFail) });
378 | ```
379 |
380 |
381 | :computer: Пример
382 |
383 | ```js
384 | Products.getList([123456, 123455, 1234454, 123458])
385 | .done(function (onDone) { console.log('onDone', onDone) })
386 | .fail(function (onFail) { console.log('onFail', onFail) });
387 | ```
388 |
389 |
390 | ---
391 |
392 | ### :hammer: setConfig
393 |
394 | > Обновление настроек
395 |
396 | Параметры
397 |
398 | | Property | Default | Назначение |
399 | |--------------|---------------|-------------------------------------------------------------------------------------------------------------------------------------------|
400 | | options | ```{ 'default': 'option-default' }``` | Через данный объект задаются шаблоны для вывода опций |
401 | | fileUrl | Пустой объект | Объект для хранения картинок из раздела «Файлы» |
402 | | decimal | Пустой объект | Колличество символов после запятой, для единиц измерения |
403 | | filtered | true | Если значение true, то недоступные опции не выводятся в шаблон. |
404 | | disableHideItem | false | Показывает недоступные варианты товаров, даже если в бек-офисе они отключены |
405 | | selectUnavailable | true | Разрешить выбирать недоступный вариант (актуально если `filtered: false`) |
406 | | allowUnavailable | false | Разрешить выбирать первым недоступный вариант |
407 | | showVariants | true | При значении false, рендер опций не производится |
408 | | initOption | true | Отмечать активные опции при инициализации? |
409 | | useMax | false | Использовать максимальное колличество? Если значение true, в quantity невозможно указать колличество больше чем доступно на складе. |
410 |
411 |
412 | :computer: Пример
413 |
414 | ```js
415 | Products.setConfig({
416 | showVariants: true,
417 | hideSelect: true,
418 | initOption: true,
419 | fileUrl: (typeof fileUrl == 'undefined') ? {} : fileUrl,
420 | filtered: true,
421 | selectUnavailable: true
422 | })
423 | ```
424 |
425 |
426 | ---
427 |
428 | ### :hammer: getInstance
429 |
430 | > Получаем экземпляр класса ProductInstance из jQuery DOM element
431 |
432 |
433 | :memo: Параметры
434 |
435 | ```js
436 | /**
437 | * @param {jQuery DOM element} $node jQuery DOM element например $('.product-cart-control')
438 | */
439 | Products.getInstance($node)
440 | .done(function (onDone) { console.log('onDone', onDone) })
441 | .fail(function (onFail) { console.log('onFail', onFail) });
442 | ```
443 |
444 |
445 |
446 |
447 | :computer: Пример
448 |
449 | ```js
450 | Products.getInstance($('.product-cart-control'))
451 | .done(function (onDone) { console.log('onDone', onDone) })
452 | .fail(function (onFail) { console.log('onFail', onFail) });
453 | ```
454 |
455 |
456 | ---
457 |
458 | ### :hammer: initInstance
459 |
460 | > Инициализировать форму товара
461 |
462 |
463 | :memo: Параметры
464 |
465 | ```js
466 | /**
467 | * @param {jQuery DOM element} $node jQuery DOM element например $('.product-cart-control')
468 | */
469 | Products.initInstance($node)
470 | .done(function (onDone) { console.log('onDone', onDone) })
471 | .fail(function (onFail) { console.log('onFail', onFail) });
472 | ```
473 |
474 |
475 |
476 |
477 | :computer: Пример
478 |
479 | ```js
480 | Products.initInstance($('.product-cart-control'))
481 | .done(function (onDone) { console.log('onDone', onDone) })
482 | .fail(function (onFail) { console.log('onFail', onFail) });
483 | ```
484 |
485 |
486 | ---
487 |
488 |
489 |
490 | :arrow_left: Назад
491 |
492 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Шпаргалка по JS API InSales v2 на платформе InSales
2 |
3 | Commonjs добавляет на сайт следущие модули:
4 |
5 | * [EventBus](https://github.com/liquid-hub/insales-common-js-v2-api/blob/master/EventBus.md)
6 | * [Cart](https://github.com/liquid-hub/insales-common-js-v2-api/blob/master/Cart.md)
7 | * [Products](https://github.com/liquid-hub/insales-common-js-v2-api/blob/master/Products.md)
8 | * [AjaxSearch](https://github.com/liquid-hub/insales-common-js-v2-api/blob/master/AjaxSearch.md)
9 | * [Compare](https://github.com/liquid-hub/insales-common-js-v2-api/blob/master/Compare.md)
10 | * [Template](https://github.com/liquid-hub/insales-common-js-v2-api/blob/master/Template.md)
11 | * [ajaxAPI](https://github.com/liquid-hub/insales-common-js-v2-api/blob/master/ajaxAPI.md)
12 | * [Shop](https://github.com/liquid-hub/insales-common-js-v2-api/blob/master/Shop.md)
13 |
14 |
15 | ## Подключение
16 |
17 | Для подключения JS API InSales v2 необходимо прописать настройку в settings_data.json — "common_js_version": "v2".
18 |
19 | Файл settings_data.json не доступен через бэк-офис, поэтому новое свойство нужно добавлять вручную через скачивание темы и последующей установке с новыми параметрами. Так же файл можно поправить если для разработки вы используете — [InSales-uploader](https://insales.github.io/insales-uploader/).
20 |
21 | Пример `settings_data.json`:
22 | ```json
23 | {
24 | "common_js_version": "v2",
25 | "presets": {
26 | "custom": {
27 | "color_text_primary": "#222222",
28 | "font_size_primary": "16px"
29 | }
30 | },
31 | "theme_title": "Базовый шаблон"
32 | }
33 | ```
34 |
--------------------------------------------------------------------------------
/Shop.md:
--------------------------------------------------------------------------------
1 | # Вспомогательные методы
2 |
3 |
4 |
5 | :arrow_left: Назад
6 |
7 |
8 | ## Методы
9 |
10 | > Методы объекта `Shop`
11 |
12 | ### :hammer: Shop.money.format
13 |
14 | > Форматирование входной строки к виду, согласно настройкам БО
15 |
16 |
17 | :memo: Параметры
18 |
19 | ```js
20 | /*
21 | * @param {string|number} amount - строка или число, которое надо отформатировать в валюту
22 | *
23 | * @return {string} Строка, содержащая результат форматирования
24 | */
25 |
26 | Shop.money.format(1234.00);
27 | // 1234 руб.
28 | ```
29 |
30 |
31 | :computer: Пример
32 |
33 | ```js
34 | Shop.money.format(1234.00);
35 | // 1234 руб.
36 | ```
37 |
38 |
39 | ---
40 |
41 | ### :hammer: Shop.config.getProducId()
42 |
43 | > Получить product-id на странице товара
44 |
45 |
46 | :computer: Пример
47 |
48 | ```js
49 | Shop.config.getProducId();
50 | // на странице товара вернет -> "70513124"
51 | // на остальных страницах -> null
52 | ```
53 |
54 |
55 | ---
56 |
57 | ---
58 |
59 | ### :hammer: Shop.config.get()
60 |
61 | > Получить конфигурацию
62 |
63 |
64 | :computer: Пример
65 |
66 | ```js
67 | Shop.config.get();
68 | ```
69 |
70 |
71 | ---
72 |
73 |
74 |
75 |
76 |
77 | :arrow_left: Назад
78 |
79 |
80 |
81 |
82 |
--------------------------------------------------------------------------------
/Template.md:
--------------------------------------------------------------------------------
1 | # Lodash шаблоны
2 |
3 | Компонет «Template» отвечает за хранение и получение шаблонов написанных на шаблонизаторе библиотеки lodash.
4 |
5 |
6 |
7 | :arrow_left: Назад
8 |
9 |
10 | - [Методы](https://github.com/liquid-hub/insales-common-js-v2-api/blob/master/Template.md#Методы)
11 | - [load](https://github.com/liquid-hub/insales-common-js-v2-api/blob/master/Template.md#hammer-load)
12 | - [render](https://github.com/liquid-hub/insales-common-js-v2-api/blob/master/Template.md#hammer-render)
13 |
14 | ## Разметка
15 |
16 | > Шаблоны записываются в тег script с обязательными атрибутами `type`, `data-template-id`.
17 |
18 | ```html
19 |
34 | ```
35 |
36 | ## Методы
37 |
38 | > Методы класса `Template`
39 |
40 | ### :hammer: load
41 |
42 | > Загрузка нового шаблона в список
43 |
44 |
45 | :memo: Параметры
46 |
47 | ```js
48 | /**
49 | * @param {string} template_body - верстка шаблона
50 | * @param {string} template_id - название шаблона
51 | */
52 | Template.load('<%= title %> ', 'test-button')
53 | ```
54 |
55 |
56 | :computer: Пример
57 |
58 | ```js
59 | Template.load('<%= title %> ', 'test-button')
60 | ```
61 |
62 |
63 | ---
64 |
65 | ### :hammer: render
66 |
67 | > Загрузка нового шаблона в список
68 |
69 |
70 | :memo: Параметры
71 |
72 | ```js
73 | /**
74 | * @param {Object} templateData - информация для шаблонизатора
75 | * @param {string} template_id - название шаблона
76 | */
77 | $(targetNode).html(Template.render({ title: 'Click me!' }, 'test-button' ));
78 | ```
79 |
80 |
81 | :computer: Пример
82 |
83 | ```js
84 | $(targetNode).html(Template.render({ title: 'Click me!' }, 'test-button' ));
85 | ```
86 |
87 |
88 | ---
89 |
90 |
91 |
92 |
93 | :arrow_left: Назад
94 |
95 |
--------------------------------------------------------------------------------
/ajaxAPI.md:
--------------------------------------------------------------------------------
1 | # Модуль для работы с API магазина
2 |
3 |
4 |
5 | :arrow_left: Назад
6 |
7 |
8 | - Корзина
9 | - [add](https://github.com/liquid-hub/insales-common-js-v2-api/blob/master/ajaxAPI.md#hammer-ajaxapicartadd)
10 | - [get](https://github.com/liquid-hub/insales-common-js-v2-api/blob/master/ajaxAPI.md#hammer-ajaxapicartget)
11 | - [remove](https://github.com/liquid-hub/insales-common-js-v2-api/blob/master/ajaxAPI.md#hammer-ajaxapicartremove)
12 | - [update](https://github.com/liquid-hub/insales-common-js-v2-api/blob/master/ajaxAPI.md#hammer-ajaxapicartupdate)
13 | - Магазин
14 | - [client](https://github.com/liquid-hub/insales-common-js-v2-api/blob/master/ajaxAPI.md#hammer-ajaxapishopclientget)
15 | - [review](https://github.com/liquid-hub/insales-common-js-v2-api/blob/master/ajaxAPI.md#hammer-ajaxapishopreview)
16 | - [comment](https://github.com/liquid-hub/insales-common-js-v2-api/blob/master/ajaxAPI.md#hammer-ajaxapishopcomment)
17 | - [message](https://github.com/liquid-hub/insales-common-js-v2-api/blob/master/ajaxAPI.md#hammer-ajaxapishopmessage)
18 | - Товар
19 | - [getList](https://github.com/liquid-hub/insales-common-js-v2-api/blob/master/ajaxAPI.md#hammer-ajaxapiproductgetList)
20 | - [get](https://github.com/liquid-hub/insales-common-js-v2-api/blob/master/ajaxAPI.md#hammer-ajaxapiproductget)
21 | - Категория
22 | - [get](https://github.com/liquid-hub/insales-common-js-v2-api/blob/master/ajaxAPI.md#hammer-ajaxapicollectionget)
23 | - Оформление заказа
24 | - [order](https://github.com/liquid-hub/insales-common-js-v2-api/blob/master/ajaxAPI.md#hammer-ajaxapicheckoutorder)
25 | - Сравнение
26 | - [add](https://github.com/liquid-hub/insales-common-js-v2-api/blob/master/ajaxAPI.md#hammer-ajaxapicompareadd)
27 | - [remove](https://github.com/liquid-hub/insales-common-js-v2-api/blob/master/ajaxAPI.md#hammer-ajaxapicompareremove)
28 | - [get](https://github.com/liquid-hub/insales-common-js-v2-api/blob/master/ajaxAPI.md#hammer-ajaxapicompareget)
29 | ## Методы
30 |
31 | > Методы объекта `ajaxAPI`
32 |
33 | ### :hammer: ajaxAPI.cart.add
34 |
35 | > Добавление товаров в корзину
36 |
37 |
38 | :memo: Параметры
39 |
40 | ```js
41 | /*
42 | * var items = {
43 | * 123456: 1,
44 | * 123457: 3,
45 | * 123450: 100
46 | * };
47 | *
48 | * var options = {
49 | * comments: { 123456: 'Ваш комментарий' },
50 | * coupon: 'test'
51 | * }
52 | */
53 |
54 | ajaxAPI.cart.add(items, options)
55 | .done(function (onDone) { console.log ('onDone: ', onDone) })
56 | .fail(function (onFail) { console.log ('onFail:', onFail) });
57 | ```
58 |
59 |
60 | :computer: Пример
61 |
62 | ```js
63 | ajaxAPI.cart.add({
64 | 123456: 1,
65 | 123457: 3,
66 | 123450: 100
67 | }, {
68 | comments: { 123456: 'Ваш комментарий' },
69 | coupon: 'test'
70 | })
71 | .done(function (onDone) { console.log ('onDone: ', onDone) })
72 | .fail(function (onFail) { console.log ('onFail:', onFail) });
73 | ```
74 |
75 |
76 | ---
77 |
78 | ### :hammer: ajaxAPI.cart.get
79 |
80 | > Получение состава корзины
81 |
82 |
83 | :computer: Пример
84 |
85 | ```js
86 | ajaxAPI.cart.get()
87 | .done(function (onDone) { console.log ('onDone: ', onDone) })
88 | .fail(function (onFail) { console.log ('onFail:', onFail) });
89 | ```
90 |
91 |
92 | ---
93 |
94 | ### :hammer: ajaxAPI.cart.remove
95 |
96 | > Удаление товара из корзины
97 |
98 |
99 | :computer: Пример
100 |
101 | ```js
102 | /**
103 | * @param {Number} variant_id - id модификации
104 | */
105 | ajaxAPI.cart.remove(123123)
106 | .done(function (onDone) { console.log ('onDone: ', onDone) })
107 | .fail(function (onFail) { console.log ('onFail:', onFail) });
108 | ```
109 |
110 |
111 | ---
112 |
113 | ### :hammer: ajaxAPI.cart.update
114 |
115 | > Обновление состава корзины.
116 |
117 | Позволяет:
118 | * обновить состав корзины
119 | * удалить несколько позиций
120 | * добавить несколько позиций
121 | * изменить кол-во товаров позиции
122 | * установить комментарии к позициям
123 |
124 |
125 |
126 | :memo: Параметры
127 |
128 | ```js
129 | /*
130 | * @param {Object} items - набор пар {variant_id: quantity, ...}. Если quantity = 0, то позиция удаляется из корзины, в противном случае устанавливается указанное кол-во
131 | * @param {Object} options - дополнительные поля: comments, coupon
132 | * @param {Object} options.comments - объект с комментариями вида {variant_id: comment, ...}
133 | * @param {String} options.coupon - название купона
134 | */
135 |
136 | var items = {
137 | 123456: 1,
138 | 123457: 3,
139 | 123450: 100
140 | };
141 |
142 | var options = {
143 | comments: { 123456: 'Ваш комментарий' },
144 | coupon: 'test'
145 | }
146 |
147 | ajaxAPI.cart.update(items, optins)
148 | .done(function (onDone) { console.log('onDone: ', onDone) })
149 | .fail(function (onFail) { console.log('onFail: ', onFail) });
150 | ```
151 |
152 |
153 | :computer: Пример
154 |
155 | ```js
156 | var items = {
157 | 123456: 1,
158 | 123457: 3,
159 | 123450: 100
160 | };
161 |
162 | var options = {
163 | comments: { 123456: 'Ваш комментарий' },
164 | coupon: 'test'
165 | }
166 |
167 | ajaxAPI.cart.update(items, optins)
168 | .done(function (onDone) { console.log('onDone: ', onDone) })
169 | .fail(function (onFail) { console.log('onFail: ', onFail) });
170 | ```
171 |
172 |
173 | ---
174 |
175 | ### :hammer: ajaxAPI.shop.client.get
176 |
177 | > Получение информации о посетителе сайта
178 |
179 |
180 | :computer: Пример
181 |
182 | ```js
183 | /*
184 | * Если пользователь залогинен, получим json с акутальной информацией о покупателе
185 | * { status: "ok", client: { // информация о покупателе }}
186 | *
187 | * В случае, если пользователь не залогинен, получим
188 | * { status: "error", message: "Not authorized", url: "/client_account/session/new" }
189 | */
190 |
191 | ajaxAPI.shop.client.get()
192 | .done(function (onDone) { console.log('onDone: ', onDone) })
193 | .fail(function (onFail) { console.log('onFail: ', onFail) })
194 |
195 | ```
196 |
197 |
198 | ---
199 |
200 | ### :hammer: ajaxAPI.shop.review
201 |
202 | > Отправка отзыва к товару
203 |
204 |
205 | :memo: Параметры
206 |
207 | ```js
208 | /*
209 | * @param {Object} review - объект с отзывом. ОБЯЗАТЕЛЬНО
210 | * @param {String} review.author - автор отзыва. ОБЯЗАТЕЛЬНО
211 | * @param {String} review.email - e-mail посетителя. ОБЯЗАТЕЛЬНО
212 | * @param {String} review.content - тело отзыва.ОБЯЗАТЕЛЬНО
213 | * @param {String} review.captcha_solution - капча. ОБЯЗАТЕЛЬНО
214 | * @param {String} productUrl - url товара, к которому хотим оставить отзыв
215 | */
216 |
217 |
218 | ajaxAPI.shop.review(review, productUrl)
219 | .done(function (onDone) { console.log('onDone: ', onDone) })
220 | .fail(function (onFail) { console.log('onFail: ', onFail) });
221 | ```
222 |
223 |
224 | :computer: Пример
225 |
226 | ```js
227 | var reviewOption = {
228 | author: 'Пользователь',
229 | email: 'user@mail.ru',
230 | content: 'Текст отзыва',
231 | rating: 5
232 | }
233 | if ($('#recaptcha-token').length) {
234 | reviewOption['g-recaptcha-response'] = $('#recaptcha-token').val();
235 | }else{
236 | reviewOption['captcha_solution'] = $('[name="review[captcha_solution]"]').val();
237 | }
238 |
239 | ajaxAPI.shop.review(reviewOption, '/collection/shop/product/main')
240 | .done(function (onDone) { console.log('onDone: ', onDone) })
241 | .fail(function (onFail) { console.log('onFail: ', onFail) });
242 | ```
243 |
244 |
245 | ---
246 |
247 | ### :hammer: ajaxAPI.shop.comment
248 |
249 | > Отправка комментария к статье
250 |
251 |
252 | :memo: Параметры
253 |
254 | ```js
255 | /*
256 | * @param {Object} comment - объект с комментарием. ОБЯЗАТЕЛЬНО
257 | * @param {String} comment.author - автор комментария. ОБЯЗАТЕЛЬНО
258 | * @param {String} comment.email - e-mail посетителя. ОБЯЗАТЕЛЬНО
259 | * @param {String} comment.content - тело комментария.ОБЯЗАТЕЛЬНО
260 | * @param {String} comment.captcha_solution - капча. ОБЯЗАТЕЛЬНО
261 | * @param {String} articleUrl - url статьи, к которому хотим оставить отзыв
262 | */
263 |
264 |
265 | ajaxAPI.shop.comment(comment, articleUrl)
266 | .done(function (onDone) { console.log('onDone: ', onDone) })
267 | .fail(function (onFail) { console.log('onFail: ', onFail) });
268 | ```
269 |
270 |
271 | :computer: Пример
272 |
273 | ```js
274 | var commentOption = {
275 | author: 'Пользователь',
276 | email: 'user@mail.ru',
277 | content: 'Текст'
278 | }
279 | if ($('#recaptcha-token').length) {
280 | reviewOption['g-recaptcha-response'] = $('#recaptcha-token').val();
281 | }else{
282 | reviewOption['captcha_solution'] = $('[name="review[captcha_solution]"]').val();
283 | }
284 |
285 | ajaxAPI.shop.comment(commentOption, '/blogs/blog/aktsiya')
286 | .done(function (onDone) { console.log('onDone: ', onDone) })
287 | .fail(function (onFail) { console.log('onFail: ', onFail) });
288 | ```
289 |
290 |
291 | ---
292 |
293 | ### :hammer: ajaxAPI.shop.message
294 |
295 | > Отпаравка сообщений
296 |
297 |
298 | :memo: Параметры
299 |
300 | ```js
301 | /*
302 | * @param {Object} message - объект с полями
303 | * @param {string} message.content - тело сообщения. Обязательно
304 | * @param {string} message.from - e-mail, с которого "отправлено" сообщение. Обязательно
305 | * @param {string} message.phone - телефон, указывается в теле письма. По-умолчанию - пустое
306 | * @param {string} message.name - имя, указывается в теле письма. По-умолчанию - пустое.
307 | * @param {string} options.subject - тема письма.
308 | */
309 |
310 | ajaxAPI.shop.message({
311 | 'from': 'json@test.ru',
312 | 'name': 'test is my name',
313 | 'subject': 'test is my subject',
314 | 'content': 'Hello',
315 | 'phone': '+00000000000000'
316 | })
317 | .done(function (onDone) { console.log('onDone: ', onDone) })
318 | .fail(function (onFail) { console.log('onFail: ', onFail) });
319 | ```
320 |
321 |
322 | :computer: Пример
323 |
324 | ```js
325 | ajaxAPI.shop.message({
326 | 'from': 'json@test.ru',
327 | 'name': 'test is my name',
328 | 'subject': 'test is my subject',
329 | 'content': 'Hello',
330 | 'phone': '+00000000000000'
331 | })
332 | .done(function (onDone) { console.log('onDone: ', onDone) })
333 | .fail(function (onFail) { console.log('onFail: ', onFail) });
334 | ```
335 |
336 |
337 | ---
338 |
339 | ### :hammer: ajaxAPI.product.getList
340 |
341 | > Получение информации о списке товаров
342 |
343 |
344 | :memo: Параметры
345 |
346 | ```js
347 | /*
348 | * Важно! Отсутствует поле "подробное описание".
349 | *
350 | * @param {array} ids - список id товаров, за раз моно получить информацию не более чем о 100 товарах
351 | */
352 |
353 | ajaxAPI.product.getList([123456,123457,123458,123459])
354 | .done(function (onDone) {console.log('onDone: ', onDone) })
355 | .fail(function (onFail) {console.log('onFail: ', onFail) });
356 | ```
357 |
358 |
359 | :computer: Пример
360 |
361 | ```js
362 | ajaxAPI.product.getList([123456,123457,123458,123459])
363 | .done(function (onDone) {console.log('onDone: ', onDone) })
364 | .fail(function (onFail) {console.log('onFail: ', onFail) });
365 | ```
366 |
367 |
368 | ---
369 |
370 | ### :hammer: ajaxAPI.product.get
371 |
372 | > Получение информации о товаре
373 |
374 |
375 | :memo: Параметры
376 |
377 | ```js
378 | /*
379 | * @param {number} id - id товара
380 | */
381 |
382 | ajaxAPI.product.get(123456)
383 | .done(function (onDone) {console.log('onDone: ', onDone) })
384 | .fail(function (onFail) {console.log('onFail: ', onFail) });
385 | ```
386 |
387 |
388 | :computer: Пример
389 |
390 | ```js
391 | ajaxAPI.product.get(123456)
392 | .done(function (onDone) {console.log('onDone: ', onDone) })
393 | .fail(function (onFail) {console.log('onFail: ', onFail) });
394 | ```
395 |
396 |
397 | ---
398 |
399 | ### :hammer: ajaxAPI.collection.get
400 |
401 | > Получение информации о коллекции
402 |
403 |
404 | :memo: Параметры
405 |
406 | ```js
407 | /*
408 | * @param {string} handle - пермалинк коллекции, объязателен.
409 | * @param {Object} filter - объект с выбранными параметрами для фильтрации
410 | * @param {Object} pager - объект с настройками пагинации
411 | * @param {number} pager.page_size - размер разбивки на страницы
412 | * @param {number} pager.page - номер страницы, по которой получаем информацию
413 | */
414 |
415 | var filter = {
416 | price_min: 4000,
417 | price_max: 10000,
418 | characteristics: [ 18775928, 18775929 ]
419 | };
420 |
421 | var pager = {
422 | page_size: 25,
423 | page: 2
424 | }
425 |
426 | ajaxAPI.collection.get('collection_handle', filter, pager)
427 | .done(function (onDone) { console.log('onDone: ', onDone) })
428 | .fail(function (onFail) { console.log('onFail: ', onFail) });
429 | ```
430 |
431 |
432 | :computer: Пример
433 |
434 | ```js
435 | var filter = {
436 | price_min: 4000,
437 | price_max: 10000
438 | };
439 |
440 | var pager = {
441 | page_size: 25,
442 | page: 2
443 | }
444 |
445 | ajaxAPI.collection.get('collection_handle', filter, pager)
446 | .done(function (onDone) { console.log('onDone: ', onDone) })
447 | .fail(function (onFail) { console.log('onFail: ', onFail) });
448 | ```
449 |
450 |
451 | ---
452 |
453 | ### :hammer: ajaxAPI.checkout.order
454 |
455 | > Оформление заказа с указанием способа оплаты и доставки. Важно - все поля обязательны для заполнения.
456 |
457 |
458 | :memo: Параметры
459 |
460 | ```js
461 | /*
462 | * @param {Object} client - объект с полями {email: почта, name: имя, phone: телефон}
463 | * @param {string} client.email - почта
464 | * @param {string} client.name - ФИО
465 | * @param {string} client.phone - телефон
466 | * @param {Object} order - объект с обязательными полями
467 | * @param {number} order.delivery - id способа доставки
468 | * @param {number} order.payment - id способа оплаты
469 | */
470 |
471 | ajaxAPI.checkout.order(client, order)
472 | .done(function (onDone) { console.log('onDone: ', onDone) })
473 | .fail(function (onFail) { console.log('onFail: ', onFail) });
474 | ```
475 |
476 |
477 | :computer: Пример
478 |
479 | ```js
480 | ajaxAPI.checkout.order({
481 | email: 'user@mail.ru',
482 | name: 'user',
483 | phone: '79879991122'
484 | }, {
485 | delivery: 1111111,
486 | payment: 2222222
487 | })
488 | .done(function (onDone) { console.log('onDone: ', onDone) })
489 | .fail(function (onFail) { console.log('onFail: ', onFail) });
490 | ```
491 |
492 |
493 | ---
494 |
495 | ### :hammer: ajaxAPI.compare.add
496 |
497 | > Добавление товара в сравнение
498 |
499 |
500 | :memo: Параметры
501 |
502 | ```js
503 | /*
504 | * @param {number} id - id товара, добавляемого в сравнение
505 | */
506 |
507 | ajaxAPI.compare.add(123456)
508 | .done(function (onDone) { console.log('onDone: ', onDone) })
509 | .fail(function (onFail) { console.log('onFail: ', onFail) });
510 | ```
511 |
512 |
513 | :computer: Пример
514 |
515 | ```js
516 | ajaxAPI.compare.add(123456)
517 | .done(function (onDone) { console.log('onDone: ', onDone) })
518 | .fail(function (onFail) { console.log('onFail: ', onFail) });
519 | ```
520 |
521 |
522 | ---
523 |
524 | ### :hammer: ajaxAPI.compare.remove
525 |
526 | > Удаление товара из сравнения
527 |
528 |
529 | :memo: Параметры
530 |
531 | ```js
532 | /*
533 | * @param {number} id - id товара, удаляемого из списка.
534 | */
535 |
536 | ajaxAPI.compare.remove(123456)
537 | .done(function (onDone) { console.log('onDone: ', onDone) })
538 | .fail(function (onFail) { console.log('onFail: ', onFail) });
539 | ```
540 |
541 |
542 | :computer: Пример
543 |
544 | ```js
545 | ajaxAPI.compare.remove(123456)
546 | .done(function (onDone) { console.log('onDone: ', onDone) })
547 | .fail(function (onFail) { console.log('onFail: ', onFail) });
548 | ```
549 |
550 |
551 | ---
552 |
553 | ### :hammer: ajaxAPI.compare.get
554 |
555 | > Получение списка сравнения
556 |
557 |
558 | :computer: Пример
559 |
560 | ```js
561 | ajaxAPI.compare.get()
562 | .done(function (onDone) { console.log('onDone: ', onDone) })
563 | .fail(function (onFail) { console.log('onFail: ', onFail) });
564 | ```
565 |
566 |
567 | ---
568 |
569 |
570 |
571 |
572 | :arrow_left: Назад
573 |
574 |
--------------------------------------------------------------------------------