Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

globestar

Користувачі
  
  • Публікації

    206
  • З нами

  • Відвідування

Усі публікації користувача globestar

  1. как реализовать даный принцып тока не с точкой а с пробелом, надо чтобы сразу второе слово переводило во вторую строчку.
  2. а он работает с связанными опциями? тоесть при выборе той или иной опции подставлялись другие, но чтобы были с вводом количества?
  3. Здраствуйте, как сделать так чтобы модуль работал тока с некторыми опцыями а не со всеми сразу? тоесть чтобы 2 опции работали по дефолту, а остальные с полями ввода количества.
  4. Есть сайт для заказа пицы или суши, и есть два размера пиццы, и к каждому размеру есть добавки(сыр,лук, помидор и тп.) но в каждой добавки для разных размеров пиццы разный вес, и естественно разная цена. И выбор добавки не одиночный тоесть можно к одной пицце заказать 3-4 добавки. Как посоветуете ето правильно реализовать? Япробывал через связные опции но связные опции не работают с чекбоксом тока радиобаттно либо лис либо изображение.
  5. <?php class ControllerProductSearch extends Controller { public function index() { $this->language->load('product/search'); $this->load->model('catalog/category'); $this->load->model('catalog/product'); $this->load->model('tool/image'); if (isset($this->request->get['search'])) { $search = $this->request->get['search']; } else { $search = ''; } if (isset($this->request->get['tag'])) { $tag = $this->request->get['tag']; } elseif (isset($this->request->get['search'])) { $tag = $this->request->get['search']; } else { $tag = ''; } if (isset($this->request->get['description'])) { $description = $this->request->get['description']; } else { $description = ''; } if (isset($this->request->get['category_id'])) { $category_id = $this->request->get['category_id']; } else { $category_id = 0; } if (isset($this->request->get['sub_category'])) { $sub_category = $this->request->get['sub_category']; } else { $sub_category = ''; } if (isset($this->request->get['sort'])) { $sort = $this->request->get['sort']; } else { $sort = 'p.sort_order'; } if (isset($this->request->get['order'])) { $order = $this->request->get['order']; } else { $order = 'ASC'; } if (isset($this->request->get['page'])) { $page = $this->request->get['page']; } else { $page = 1; } if (isset($this->request->get['limit'])) { $limit = $this->request->get['limit']; } else { $limit = $this->config->get('config_catalog_limit'); } if (isset($this->request->get['search'])) { $this->document->setTitle($this->language->get('heading_title') . ' - ' . $this->request->get['search']); } else { $this->document->setTitle($this->language->get('heading_title')); } $this->document->addScript('catalog/view/javascript/jquery/jquery.total-storage.min.js'); $this->document->addScript('catalog/view/javascript/jquery/jail/jail.min.js'); $this->data['breadcrumbs'] = array(); $this->data['breadcrumbs'][] = array( 'text' => $this->language->get('text_home'), 'href' => $this->url->link('common/home'), 'separator' => false ); $url = ''; if (isset($this->request->get['search'])) { $url .= '&search=' . urlencode(html_entity_decode($this->request->get['search'], ENT_QUOTES, 'UTF-8')); } if (isset($this->request->get['tag'])) { $url .= '&tag=' . urlencode(html_entity_decode($this->request->get['tag'], ENT_QUOTES, 'UTF-8')); } if (isset($this->request->get['description'])) { $url .= '&description=' . $this->request->get['description']; } if (isset($this->request->get['category_id'])) { $url .= '&category_id=' . $this->request->get['category_id']; } if (isset($this->request->get['sub_category'])) { $url .= '&sub_category=' . $this->request->get['sub_category']; } if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } if (isset($this->request->get['page'])) { $url .= '&page=' . $this->request->get['page']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $this->data['breadcrumbs'][] = array( 'text' => $this->language->get('heading_title'), 'href' => $this->url->link('product/search', $url), 'separator' => $this->language->get('text_separator') ); if (isset($this->request->get['search'])) { $this->data['heading_title'] = $this->language->get('heading_title') . ' - ' . $this->request->get['search']; } else { $this->data['heading_title'] = $this->language->get('heading_title'); } $this->data['text_empty'] = $this->language->get('text_empty'); $this->data['text_critea'] = $this->language->get('text_critea'); $this->data['text_search'] = $this->language->get('text_search'); $this->data['text_keyword'] = $this->language->get('text_keyword'); $this->data['text_category'] = $this->language->get('text_category'); $this->data['text_sub_category'] = $this->language->get('text_sub_category'); $this->data['text_quantity'] = $this->language->get('text_quantity'); $this->data['text_manufacturer'] = $this->language->get('text_manufacturer'); $this->data['text_model'] = $this->language->get('text_model'); $this->data['text_price'] = $this->language->get('text_price'); $this->data['text_tax'] = $this->language->get('text_tax'); $this->data['text_points'] = $this->language->get('text_points'); $this->data['text_compare'] = sprintf($this->language->get('text_compare'), (isset($this->session->data['compare']) ? count($this->session->data['compare']) : 0)); $this->data['text_display'] = $this->language->get('text_display'); $this->data['text_list'] = $this->language->get('text_list'); $this->data['text_grid'] = $this->language->get('text_grid'); $this->data['text_sort'] = $this->language->get('text_sort'); $this->data['text_limit'] = $this->language->get('text_limit'); $this->data['entry_search'] = $this->language->get('entry_search'); $this->data['entry_description'] = $this->language->get('entry_description'); $this->data['button_search'] = $this->language->get('button_search'); $this->data['button_cart'] = $this->language->get('button_cart'); $this->data['button_wishlist'] = $this->language->get('button_wishlist'); $this->data['button_compare'] = $this->language->get('button_compare'); $this->data['compare'] = $this->url->link('product/compare'); $this->load->model('catalog/category'); // 3 Level Category Search $this->data['categories'] = array(); $categories_1 = $this->model_catalog_category->getCategories(0); foreach ($categories_1 as $category_1) { $level_2_data = array(); $categories_2 = $this->model_catalog_category->getCategories($category_1['category_id']); foreach ($categories_2 as $category_2) { $level_3_data = array(); $categories_3 = $this->model_catalog_category->getCategories($category_2['category_id']); foreach ($categories_3 as $category_3) { $level_3_data[] = array( 'category_id' => $category_3['category_id'], 'name' => $category_3['name'], ); } $level_2_data[] = array( 'category_id' => $category_2['category_id'], 'name' => $category_2['name'], 'children' => $level_3_data ); } $this->data['categories'][] = array( 'category_id' => $category_1['category_id'], 'name' => $category_1['name'], 'children' => $level_2_data ); } $this->data['products'] = array(); if (isset($this->request->get['search']) || isset($this->request->get['tag'])) { $data = array( 'filter_name' => $search, 'filter_tag' => $tag, 'filter_description' => $description, 'filter_category_id' => $category_id, 'filter_sub_category' => $sub_category, 'sort' => $sort, 'order' => $order, 'start' => ($page - 1) * $limit, 'limit' => $limit ); $product_total = $this->model_catalog_product->getTotalProducts($data); $results = $this->model_catalog_product->getProducts($data); foreach ($results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $this->config->get('config_image_product_width'), $this->config->get('config_image_product_height')); $imagewidth = $this->config->get('config_image_product_width'); $imageheight = $this->config->get('config_image_product_height'); } else { $image = false; $imagewidth = ''; $imageheight = ''; } if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $price = false; } if ((float)$result['special']) { $special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax'))); } else { $special = false; } if ($this->config->get('config_tax')) { $tax = $this->currency->format((float)$result['special'] ? $result['special'] : $result['price']); } else { $tax = false; } if ($this->config->get('config_review_status')) { $rating = (int)$result['rating']; } else { $rating = false; } $this->data['products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'thumbwidth' => $imagewidth, 'thumbheight' => $imageheight, 'name' => $result['name'], 'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, 300) . '..', 'description_mini' => html_entity_decode ($result['description_mini']), 'price' => $price, 'special' => $special, 'tax' => $tax, 'rating' => $result['rating'], 'reviews' => sprintf($this->language->get('text_reviews'), (int)$result['reviews']), 'href' => $this->url->link('product/product', 'product_id=' . $result['product_id'] . $url) ); } $url = ''; if (isset($this->request->get['search'])) { $url .= '&search=' . urlencode(html_entity_decode($this->request->get['search'], ENT_QUOTES, 'UTF-8')); } if (isset($this->request->get['tag'])) { $url .= '&tag=' . urlencode(html_entity_decode($this->request->get['tag'], ENT_QUOTES, 'UTF-8')); } if (isset($this->request->get['description'])) { $url .= '&description=' . $this->request->get['description']; } if (isset($this->request->get['category_id'])) { $url .= '&category_id=' . $this->request->get['category_id']; } if (isset($this->request->get['sub_category'])) { $url .= '&sub_category=' . $this->request->get['sub_category']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $this->data['sorts'] = array(); $this->data['sorts'][] = array( 'text' => $this->language->get('text_default'), 'value' => 'p.sort_order-ASC', 'href' => $this->url->link('product/search', 'sort=p.sort_order&order=ASC' . $url) ); $this->data['sorts'][] = array( 'text' => $this->language->get('text_name_asc'), 'value' => 'pd.name-ASC', 'href' => $this->url->link('product/search', 'sort=pd.name&order=ASC' . $url) ); $this->data['sorts'][] = array( 'text' => $this->language->get('text_name_desc'), 'value' => 'pd.name-DESC', 'href' => $this->url->link('product/search', 'sort=pd.name&order=DESC' . $url) ); $this->data['sorts'][] = array( 'text' => $this->language->get('text_price_asc'), 'value' => 'p.price-ASC', 'href' => $this->url->link('product/search', 'sort=p.price&order=ASC' . $url) ); $this->data['sorts'][] = array( 'text' => $this->language->get('text_price_desc'), 'value' => 'p.price-DESC', 'href' => $this->url->link('product/search', 'sort=p.price&order=DESC' . $url) ); if ($this->config->get('config_review_status')) { $this->data['sorts'][] = array( 'text' => $this->language->get('text_rating_desc'), 'value' => 'rating-DESC', 'href' => $this->url->link('product/search', 'sort=rating&order=DESC' . $url) ); $this->data['sorts'][] = array( 'text' => $this->language->get('text_rating_asc'), 'value' => 'rating-ASC', 'href' => $this->url->link('product/search', 'sort=rating&order=ASC' . $url) ); } $this->data['sorts'][] = array( 'text' => $this->language->get('text_model_asc'), 'value' => 'p.model-ASC', 'href' => $this->url->link('product/search', 'sort=p.model&order=ASC' . $url) ); $this->data['sorts'][] = array( 'text' => $this->language->get('text_model_desc'), 'value' => 'p.model-DESC', 'href' => $this->url->link('product/search', 'sort=p.model&order=DESC' . $url) ); $url = ''; if (isset($this->request->get['search'])) { $url .= '&search=' . urlencode(html_entity_decode($this->request->get['search'], ENT_QUOTES, 'UTF-8')); } if (isset($this->request->get['tag'])) { $url .= '&tag=' . urlencode(html_entity_decode($this->request->get['tag'], ENT_QUOTES, 'UTF-8')); } if (isset($this->request->get['description'])) { $url .= '&description=' . $this->request->get['description']; } if (isset($this->request->get['category_id'])) { $url .= '&category_id=' . $this->request->get['category_id']; } if (isset($this->request->get['sub_category'])) { $url .= '&sub_category=' . $this->request->get['sub_category']; } if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } $this->data['limits'] = array(); $limits = array_unique(array($this->config->get('config_catalog_limit'), 25, 50, 75, 100)); sort($limits); foreach($limits as $value){ $this->data['limits'][] = array( 'text' => $value, 'value' => $value, 'href' => $this->url->link('product/search', $url . '&limit=' . $value) ); } $url = ''; if (isset($this->request->get['search'])) { $url .= '&search=' . urlencode(html_entity_decode($this->request->get['search'], ENT_QUOTES, 'UTF-8')); } if (isset($this->request->get['tag'])) { $url .= '&tag=' . urlencode(html_entity_decode($this->request->get['tag'], ENT_QUOTES, 'UTF-8')); } if (isset($this->request->get['description'])) { $url .= '&description=' . $this->request->get['description']; } if (isset($this->request->get['category_id'])) { $url .= '&category_id=' . $this->request->get['category_id']; } if (isset($this->request->get['sub_category'])) { $url .= '&sub_category=' . $this->request->get['sub_category']; } if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $pagination = new Pagination(); $pagination->total = $product_total; $pagination->page = $page; $pagination->limit = $limit; $pagination->text = $this->language->get('text_pagination'); $pagination->url = $this->url->link('product/search', $url . '&page={page}'); $this->data['pagination'] = $pagination->render(); } $this->data['search'] = $search; $this->data['description'] = $description; $this->data['category_id'] = $category_id; $this->data['sub_category'] = $sub_category; $this->data['sort'] = $sort; $this->data['order'] = $order; $this->data['limit'] = $limit; if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/search.tpl')) { $this->template = $this->config->get('config_template') . '/template/product/search.tpl'; } else { $this->template = 'default/template/product/search.tpl'; } $this->children = array( 'common/column_left', 'common/column_right', 'common/content_top', 'common/content_bottom', 'common/footer', 'common/header' ); $this->response->setOutput($this->render()); } } ?> оргинальный файл и модульный файл <?php class ControllerModuleIsearch extends Controller { protected function index() { $this->language->load('module/isearch'); $this->data['heading_title'] = $this->language->get('heading_title'); $this->data['data']['iSearch'] = $this->getModuleSettings(); $this->data['currenttemplate'] = $this->config->get('config_template'); if($this->data['data']['iSearch']['Enabled'] != 'no') { $this->document->addScript('catalog/view/javascript/isearch.js'); if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/stylesheet/isearch.css')) { $this->document->addStyle('catalog/view/theme/'.$this->config->get('config_template') . '/stylesheet/isearch.css'); } else { $this->document->addStyle('catalog/view/theme/default/stylesheet/isearch.css'); } if (!empty($_SERVER['HTTP_USER_AGENT'])) { if (stripos($_SERVER['HTTP_USER_AGENT'], 'MSIE 7') !== FALSE) { if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/stylesheet/isearch_ie7.css')) { $this->document->addStyle('catalog/view/theme/'.$this->config->get('config_template') . '/stylesheet/isearch_ie7.css'); } else { $this->document->addStyle('catalog/view/theme/default/stylesheet/isearch_ie7.css'); } } if (stripos($_SERVER['HTTP_USER_AGENT'], 'MSIE 8') !== FALSE) { if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/stylesheet/isearch_ie8.css')) { $this->document->addStyle('catalog/view/theme/'.$this->config->get('config_template') . '/stylesheet/isearch_ie8.css'); } else { $this->document->addStyle('catalog/view/theme/default/stylesheet/isearch_ie8.css'); } } } if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/module/isearch.tpl')) { $this->template = $this->config->get('config_template') . '/template/module/isearch.tpl'; } else { $this->template = 'default/template/module/isearch.tpl'; } $this->render(); } } function getModuleSettings() { if (isset($this->request->server['HTTPS']) && (($this->request->server['HTTPS'] == 'on') || ($this->request->server['HTTPS'] == '1'))) { return str_replace('http', 'https', $this->config->get('iSearch')); } else { return $this->config->get('iSearch'); } } public function ajaxget() { header('Cache-Control: no-cache, must-revalidate'); header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); header('Content-type: application/json'); header('Access-Control-Allow-Origin: *'); header('Access-Control-Allow-Headers: X-Requested-With, Content-Type'); $set = $this->getModuleSettings(); $useImages = ($set['LoadImagesOnInstantSearch']=='yes') ? true : false; $strictSearch = ($set['UseStrictSearch']=='yes') ? true : false; $singularize = ($set['UseSingularize']=='yes') ? true : false; $index = !empty($set['ResultsSpellCheckSystem']) ? $set['ResultsSpellCheckSystem'] : 'no'; $checkRules = $index == 'yes' ? (!empty($set['SCWords']) ? $set['SCWords'] : array()) : NULL; $excludeTerms = !empty($set['ExcludeTerms']) ? $set['ExcludeTerms'] : ''; $excludeRules = !empty($set['ExcludeProducts']) ? $set['ExcludeProducts'] : array(); //{HOOK_SEARCH_IN_CACHE_SETTING} $searchIn = array( 'name' => !empty($set['SearchIn']['ProductName']), 'model' => !empty($set['SearchIn']['ProductModel']), 'upc' => !empty($set['SearchIn']['UPC']), 'sku' => !empty($set['SearchIn']['SKU']), 'ean' => !empty($set['SearchIn']['EAN']), 'jan' => !empty($set['SearchIn']['JAN']), 'isbn' => !empty($set['SearchIn']['ISBN']), 'mpn' => !empty($set['SearchIn']['MPN']), 'manufacturer' => !empty($set['SearchIn']['Manufacturer']), 'attributes' => !empty($set['SearchIn']['AttributeNames']), 'attributes_values' => !empty($set['SearchIn']['AttributeValues']), 'categories' => !empty($set['SearchIn']['Categories']), 'filters' => !empty($set['SearchIn']['Filters']), 'description' => !empty($set['SearchIn']['Description']), 'tags' => !empty($set['SearchIn']['Tags']), 'location' => !empty($set['SearchIn']['Location']), 'optionname' => !empty($set['SearchIn']['OptionName']), 'optionvalue' => !empty($set['SearchIn']['OptionValue']), 'metadescription' => !empty($set['SearchIn']['MetaDescription']), 'metakeyword' => !empty($set['SearchIn']['MetaKeyword']), ); $keywords = (empty($_GET['k'])) ? 'no-ajax-mode' : $_GET['k']; $this->load->model('catalog/isearch'); $resultsByNameAndModel = $this->model_catalog_isearch->iSearch($keywords,$searchIn,$useImages,$strictSearch,$singularize,$checkRules,'','ASC',0,false,$excludeTerms,$excludeRules/*{HOOK_SEARCH_IN_CACHE_ATTRIBUTE}*/); $products = $resultsByNameAndModel; echo json_encode($products); } } ?> какая строка отвечает за вывод вот етой ссылки? тоесть товар в сетке уже с другой ссылкой.
  6. Контролер поиска opencart или контроллер модуля поиска стороннего??
  7. мне заказчик говорить нужно поправить роуты в поиске, так как ему разьяснили другие люди, я так понимаю он хочет чтобы ссылка выглядела таким образом когда кликаешь на товар в окне поиска. (http://мой сайт.if.ua/don-yapon.html).
  8. $('#button-search').bind('click', function() { url = 'index.php?route=product/isearch'; var search = $('#content input[name=\'search\']').attr('value'); if (search) { url += '&search=' + encodeURIComponent(search); } этот кусок? как направить его правильно?
  9. Здраствуйте, у меня такая проблема. Стоит модуль isearch, и при вбивании запроса в строку поиска идет выдача товаров, когда кликаю на него у меня ссылка на товар такого вида: http://мой сайт.if.ua/don-yapon.html?search=%D0%B4%D0%BE%D0%BD как сделать правильней ее чтобы небыло такого всякого дополнительного, чистая ссылка на товар.
  10. удалил по етому примеру, всеравно выводит некоректный емейл адрес.
  11. Какбы имееться выбор варианта опций 36штук, ето для сайта пиццы добавки к пицце, и все они стотят как пункт выбора, тоесть можно много выбрать. и на странице большой список некрасиво выглядит, хотелось чтобы ето все пряталось под кнопку и выводилось в модальном окне? есть ли такая реализация ?
  12. Поставил версию 2.0.16 на шаблон Megastore, в лог ошибок не выводит, но и цену не просчитывает по опциям.
  13. UPDATE oc_product_option_value SET subtract = 0 WHERE subtract = 1; - это для вычтения со склада опций. UPDATE oc_product SET subtract = 0 WHERE subtract = 1; - это для вычтения самого товара. oc_ - меняем на префикс своей бд
  14. когда удаляю(выключаю) все способы доставки и оплаты, то кнопка заказть не работает и в логах вот такая проблема. 2014-09-28 20:07:37 - PHP Notice: Undefined index: payment_method in /home/мойсайт.ру/catalog/controller/checkout/checkout.php on line 357 2014-09-28 20:07:37 - PHP Notice: Undefined index: shipping_method in /home/мойсайт.ру/demo2/catalog/controller/checkout/checkout.php on line 358 2014-09-28 20:07:37 - PHP Notice: Undefined index: payment_method in /home/мойсайт.ру/demo2/catalog/controller/checkout/checkout.php on line 388
  15. тык вот сайт, даю доступ, надо сделать также как там в клиента
  16. изначально думал на opencart так как опциями связными делал калькулятор вот такой http://bookfotoprint.com.ua/kalkylyator.html , ну он не доделаный, не все опции, потому и подумал на opencart. А есть соображения еще както реализовать? есть фирма она разработала модуль по opencart вот тут пример магазина и под картинкой товара редактор шаблона, http://www.eprint.com.ua/index.php?route=product/product&path=96&product_id=492 но там неподходит мне сама суть, они сделали чисто что все подгружаеться с их сервера и невозможно сделать валидацию картинок на шаблоне. и еще есть такая кантора как vizitka.com они выкупили права на Украину в одной компании и она говорит что мне такую разработку не может предоставить.
  17. так и не появился вариант кода который пердставили с параметром patch и сделайте так чтобы альфа версию можно было качать и ту и ту версию. и будет ли возможность подсветки остального, такого как учитывать в заказе.
  18. Ребята как реализовать вывод цены в блоке возле товара и который был бы прикреплен к краю и прокручивался по скроллингу и всегда был в топе? и какие переменные отвечают чтобы выводить текст соответственно выбраным опциям. привожу пример на картинке. по синей стрелке при скролинге страницы блок опускаеться вниз.
  19. openT-shirts как я понимаю ето футболка на которую можно наносить некоторые изображения, а мне надо чтобы был валидатор изображения и все остальное.
  20. Нужен модуль для заказа, и подгрузки файлов своего дизайна фотокниги, чтото такого рода. vizitka.com pro.cyfrolab.com нужно таккую реализацию на opencart
  21. так там один файл vqmod, и сам vqmod установил, либо другие модули vqmod работают без ошибок, а вот етот не стыкуеться с шаблоном хоть убей.
  22. Помогите разобраться, поставил версию autocalc_price_option_v2.0.14, на шаблонах R.Gen работает без проблем. Надо было применить даный модуль на другом проекте, поставил модуль на шаблон journal и он не работает, переключал на дефолтный шаблон, там тоже, в чём может быть проблема ? error log vqmod чистый. Куда копать?
  23. Возможно ли реализовать так чтобы модуль брал популярность товара отталкиваясь от тех даных которые в админке ест ьв вкладке самые просматриваемые, и там всё в % и от етого делать 1,2,3 и тд ?
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.