├── 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 |
29 | 30 | 31 | 32 |
33 |
34 | ``` 35 | 36 |
37 | 38 | --- 39 | 40 | ### Разметка для поиска 41 | 42 |
43 | Подробнее 44 | 45 | ```twig 46 |
47 | 48 | 49 | 50 |
51 |
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 |
57 | {% if product.show_variants? %} 58 | 63 | {% else %} 64 | 65 | {% endif %} 66 | 67 |
68 | 69 | - 70 | + 71 |
72 | 75 |
76 | ``` 77 | 78 |
79 | 80 | --- 81 | 82 | ### Разметка корзины 83 | 84 |
85 | Подробнее 86 | 87 | ```twig 88 |
89 | 90 | 91 | 92 | {% for item in cart.items %} 93 |
94 |
95 | 96 | - 97 | + 98 |
99 | X 100 |
101 | {% endfor %} 102 | 103 |
104 | 105 | 106 | 107 |
108 | 109 | 110 | 111 | 112 |
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 | 26 | 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 |
59 | {% if product.show_variants? %} 60 | 65 | {% else %} 66 | 67 | {% endif %} 68 | 69 |
70 | 71 | - 72 | + 73 |
74 | 77 |
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('', 'test-button') 53 | ``` 54 |
55 |
56 | :computer: Пример 57 | 58 | ```js 59 | Template.load('', '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 | --------------------------------------------------------------------------------