Поиск по сайту
Результаты поиска по тегам 'запчасти'.
Найдено 8 результатов
-
Подскажите, нужен модуль для создания каталогов мотозапчастей, что бы картинка схема, на ней выбираешь запчасть, и он переходит на название запчасти, артикул и цену. Каталожные картинки схем есть.
-
Шаблон магазина автозапчастей ExlusiveTuning 2.X [Поддержка]
mister12 опубликовал теме в Платные шаблоны
18 Скачать / Купить дополнение Шаблон магазина автозапчастей ExlusiveTuning 2.X Шаблон работает на Opencart и ocStore 2.1.X / 2.3.X / 3.0-3.0.2!!! (версия для 1.5.X находится тут) Описание шаблона "Магазин автозапчастей ExlusiveTuning 2.X": Индивидуальный, стильный, адаптивный шаблон. Является доработанной версией шаблона, созданного под предыдущие версии OpenCart. Как показала практика, шаблон магазина автозапчастей прекрасно подходит под следующие тематики: Автозапчасти, автотовары, автокосметика, автохимия, автомагнитолы и т.д. Продажа тактического снаряжения и амуниции (охотничье снаряжение, все для страйкбола) Продажа запчастей для электроинструментов (дрели, перфораторы, УШМ, шуруповерты и т.д.) Продажа отопительного оборудования (тепловентиляторы, тепловые пушки и т.п.) Продажа насосов и газовых пружин Продажа велосипедов и аксессуаров для них Продажа ножей для охоты Продажа оборудования для лодок (лодочные электромоторы, эхолоты, датчики) Это далеко не исчерпывающий список тематик, для которых шаблон удачно подходит. В отличии от предыдущей версии шаблона сделан ряд изменений. Самое главное из которых - это, конечно же, поддержка самой свежей версии Opencart Store, которую многие спрашивали. Внесены еще ряд изменений в дизайн, чтобы повысить его универсальность. Корзина теперь стала без автомобильной иконки, у слайдера были убраны иконки колес, частично отрисованы новые баннеры и т.п. В целом же основная концепция шаблона все так же осталась автомобильной. ШАБЛОН ДОСТУПЕН В ДВУХ ЦВЕТОВЫХ ВАРИАНТАХ НА ВАШ ВЫБОР! Демо магазина автозапчастей ExlusiveTuning 2.X (темный стиль): Главная страница: http://opencart.demo1.bget.ru/autov2/ Страница категории: http://opencart.demo1.bget.ru/autov2/kuzov/ Страница товара: http://opencart.demo1.bget.ru/autov2/podveska/torm_diski/rn1335 Демо магазина автозапчастей ExlusiveTuning 2.X (светлый стиль): Главная страница: http://opencart.demo1.bget.ru/autov2_white/ Страница категории: http://opencart.demo1.bget.ru/autov2_white/kuzov/ Страница товара: http://opencart.demo1.bget.ru/autov2_white/kuzov/kapot/780986gef Демо-админка магазина автозапчастей: http://opencart.demo1.bget.ru/autov2/admin/ Логин: demo Пароль: demo Шаблон тестировался на ocStore ocStore 2.1.0.2.1, 2.3.0.2.3, а также на версиях Opencart 2.1.0.2, Opencart 2.3.0.2, Opencart 3.0.2.0! Совместимость/валидация шаблона магазина автозапчастей ExlusiveTuning 2.X: Шаблон прошел полную оптимизацию кода. Google pagespeed оценивает уровень оптимизации на 99/100!!!!! Это очень высокий результат! В мобильной версии 93/100. Ссылка на pagespeed - https://developers.google.com/speed/pagespeed/insights/?url=http%3A%2F%2Fopencart.demo1.bget.ru%2Fautov2%2F&tab=desktop Шаблон тестировался во всех современных браузерах, проходит проверку валидатора кода без единой ошибки. Ссылка на валидатор - https://validator.w3.org/nu/?doc=http%3A%2F%2Fopencart.demo1.bget.ru%2Fautov2%2F Корректно отображается на любых мобильных устройствах с любыми размерами экранов. Адаптивная верстка легко проходит проверку от Google Mobile Friendly Websites, благодаря чему исключены потери поискового трафика. Ссылка на mobile-friendly - https://search.google.com/test/mobile-friendly?id=tH-hu3PVSdy09TpAWs4HvQ ПРЕДСТАВЛЕННЫЙ ШАБЛОН БАЗОВЫЙ И ПРИ ЖЕЛАНИИ ДОРАБАТЫВАЕТСЯ ПОД КЛИЕНТА Совместимость с автомобильными модулями: Есть совместимость с модулем Additional Hover Images, который используется на таких площадках как Auto.ru, сервисе объявлений Avito. Лицензия магазина автозапчастей ExlusiveTuning 2.X: 1. В стоимость шаблона также ВКЛЮЧЕНА ПОМОЩЬ по установке и настройке данного шаблона (помощь согласно инструкции). 2. Приобретая шаблон вы получаете неограниченный доступ ко всем последующим обновлениям шаблона. 3. Запрещается распространять файлы шаблона. 4. Покупатель имеет право использовать приобретенный шаблон только для установки на собственный интернет-магазин, либо (если это разработчик) на интернет-магазин клиента. 5. Шаблон реализуется по принципу "1 покупатель – 1 домен" 6. Если покупатель будет уличен в нарушении правил описанных выше – он автоматически лишается всякой технической поддержки и подлежит обнародованию. Обратите внимание! По шаблону магазина автозапчастей ExlusiveTuning 2.X осуществляется дальнейшая доработка и расширение возможностей, которые появятся в ближайшее время! Добавил mister12 Добавлено 23.11.2017 Категория Платные шаблоны Системные требования Метод активации Без активации Ioncube Loader Нет ocStore 3.0 2.3 2.1 OpenCart.Pro, ocShop Не проверялось Обращение к серверу разработчика Нет -
Добрый вечер. Нужен модуль подбора товаров по автомобилю. Поиск по форуму к конкретному решению не привел. Прошу вашей помощи в решении данного вопроса, а также добавляю сайт-пример с таким фильтром https://demimotors.ua/.
- 5 ответов
-
- фильтр
- автомобили
-
(и ещё 1)
Теги:
-
Вопрос такой как вывести товары на основе похожих товаров ! Мной было реализовано следующие правки ! catalog/controller/product/search.php $results = $this->model_catalog_product->getProducts($data); //Вызов метода getFoundProducts должен проводится сразу же после getProducts //только тогда он выдает правильное значения количества товаров $product_total = $this->model_catalog_product->getFoundProducts(); 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')); } else { $image = false; } 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; } /*original*/ $resultsRelated = $this->model_catalog_product->getProductRelated($result['product_id']); foreach ($resultsRelated as $resultRelated) { if ($result['image']) { $image_related = $this->model_tool_image->resize($resultRelated['image'], $this->config->get('config_image_related_width'), $this->config->get('config_image_related_height')); } else { $image_related = false; } if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { $price_resultRelated = $this->currency->format($this->tax->calculate($resultRelated['price'], $resultRelated['tax_class_id'], $this->config->get('config_tax'))); } else { $price_resultRelated = false; } if ((float) $resultRelated['special']) { $special = $this->currency->format($this->tax->calculate($resultRelated['special'], $resultRelated['tax_class_id'], $this->config->get('config_tax'))); } else { $special = false; } if ($this->config->get('config_review_status')) { $rating = (int) $resultRelated['rating']; } else { $rating = false; } $related[$result['product_id']][] = array( 'product_id_original' => $resultRelated['product_id'], 'thumb_original' => $image_related, 'name_original' => utf8_substr(strip_tags(html_entity_decode($resultRelated['name'], ENT_QUOTES, 'UTF-8')), 0, 26) . '', 'manufacturer_original' => $resultRelated['manufacturer'], 'original' => $resultRelated['original'], 'location_original' => $resultRelated['location'], 'minimum_original' => $resultRelated['minimum'], 'date_available_original' => $resultRelated['date_available'], 'quantity_original' => $resultRelated['quantity'], 'price_original' => $price_resultRelated, 'mode_originall' => $resultRelated['model'], 'model_no_original' => utf8_substr(strip_tags(html_entity_decode($resultRelated['model'], ENT_QUOTES, 'UTF-8')), 0, 1) . '____' . utf8_substr(strip_tags(html_entity_decode($resultRelated['model'], ENT_QUOTES, 'UTF-8')), -1) . '', 'special_original' => $special, 'rating_original' => $rating, 'description_original' => utf8_substr(strip_tags(html_entity_decode($resultRelated['description'], ENT_QUOTES, 'UTF-8')), 0, 300) . '', 'tax_original' => $tax, 'reviews_original' => sprintf($this->language->get('text_reviews'), (int) $resultRelated['reviews']), 'man_info_original' => $this->url->link('product/manufacturer/info', 'manufacturer_id=' . $resultRelated['manufacturer_id']), 'href_original' => $this->url->link('product/product', 'product_id=' . $resultRelated['product_id']) ); } /*neoriginal*/ $resultsRelatedNeoriginal = $this->model_catalog_product->getProductRelatedNeoriginal($result['product_id']); foreach ($resultsRelatedNeoriginal as $resultRelatedNeoriginal) { if ($result['image']) { $image = $this->model_tool_image->resize($resultRelatedNeoriginal['image'], $this->config->get('config_image_related_width'), $this->config->get('config_image_related_height')); } else { $image = false; } if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { $price_resultRelatedNeoriginal = $this->currency->format($this->tax->calculate($resultRelatedNeoriginal['price'], $resultRelatedNeoriginal['tax_class_id'], $this->config->get('config_tax'))); } else { $price_resultRelatedNeoriginal = false; } if ((float) $resultRelatedNeoriginal['special']) { $special = $this->currency->format($this->tax->calculate($resultRelatedNeoriginal['special'], $resultRelatedNeoriginal['tax_class_id'], $this->config->get('config_tax'))); } else { $special = false; } if ($this->config->get('config_review_status')) { $rating = (int) $resultRelatedNeoriginal['rating']; } else { $rating = false; } $related_neoriginal[$result['product_id']][] = array( 'product_id_neoriginal' => $resultRelatedNeoriginal['product_id'], 'thumb_neoriginal' => $image, 'name_neoriginal' => utf8_substr(strip_tags(html_entity_decode($resultRelatedNeoriginal['name'], ENT_QUOTES, 'UTF-8')), 0, 26) . '', 'manufacturer_neoriginal' => $resultRelatedNeoriginal['manufacturer'], 'minimum_neoriginal' => $resultRelatedNeoriginal['minimum'], 'location_neoriginal' => $resultRelatedNeoriginal['location'], 'original_neoriginal' => $resultRelatedNeoriginal['original'], 'quantity_neoriginal' => $resultRelatedNeoriginal['quantity'], 'date_available_neoriginal' => $resultRelatedNeoriginal['date_available'], 'description_neoriginal' => utf8_substr(strip_tags(html_entity_decode($resultRelatedNeoriginal['description'], ENT_QUOTES, 'UTF-8')), 0, 300) . '', 'price_neoriginal' => $price_resultRelatedNeoriginal, 'model_neoriginal' => $resultRelatedNeoriginal['model'], 'model_no_neoriginal' => utf8_substr(strip_tags(html_entity_decode($resultRelatedNeoriginal['model'], ENT_QUOTES, 'UTF-8')), 0, 1) . '____' . utf8_substr(strip_tags(html_entity_decode($resultRelatedNeoriginal['model'], ENT_QUOTES, 'UTF-8')), -1) . '', 'special_neoriginal' => $special, 'rating_neoriginal' => $rating, 'tax_neoriginal' => $tax, 'reviews_neoriginal' => sprintf($this->language->get('text_reviews'), (int) $resultRelatedNeoriginal['reviews']), 'man_info_neoriginal' => $this->url->link('product/manufacturer/info', 'manufacturer_id=' . $resultRelatedNeoriginal['manufacturer_id']), 'href_neoriginal' => $this->url->link('product/product', 'product_id=' . $resultRelatedNeoriginal['product_id']) ); } /*komplect*/ $resultsRelatedKomplect = $this->model_catalog_product->getProductRelatedKomplect($result['product_id']); foreach ($resultsRelatedKomplect as $resultRelatedKomplect) { if ($result['image']) { $image = $this->model_tool_image->resize($resultRelatedKomplect['image'], $this->config->get('config_image_related_width'), $this->config->get('config_image_related_height')); } else { $image = false; } if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) { $price_resultRelatedKomplect = $this->currency->format($this->tax->calculate($resultRelatedKomplect['price'], $resultRelatedKomplect['tax_class_id'], $this->config->get('config_tax'))); } else { $price_resultRelatedKomplect = false; } if ((float) $resultRelatedKomplect['special']) { $special = $this->currency->format($this->tax->calculate($resultRelatedKomplect['special'], $resultRelatedKomplect['tax_class_id'], $this->config->get('config_tax'))); } else { $special = false; } if ($this->config->get('config_review_status')) { $rating = (int) $resultRelatedKomplect['rating']; } else { $rating = false; } $related_komplect[$result['product_id']][] = array( 'product_id_komplect' => $resultRelatedKomplect['product_id'], 'thumb_komplect' => $image, 'name_komplect' => utf8_substr(strip_tags(html_entity_decode($resultRelatedKomplect['name'], ENT_QUOTES, 'UTF-8')), 0, 26) . '', 'manufacturer_komplect' => $resultRelatedKomplect['manufacturer'], 'date_available_komplect' => $resultRelatedKomplect['date_available'], 'description_komplect' => utf8_substr(strip_tags(html_entity_decode($resultRelatedKomplect['description'], ENT_QUOTES, 'UTF-8')), 0, 300) . '', 'original' => $resultRelatedKomplect['original'], 'minimum_komplect' => $resultRelatedKomplect['minimum'], 'quantity_komplect' => $resultRelatedKomplect['quantity'], 'price_komplect' => $price_resultRelatedKomplect, 'model_komplect' => $resultRelatedKomplect['model'], 'model_no_komplect' => utf8_substr(strip_tags(html_entity_decode($resultRelatedKomplect['model'], ENT_QUOTES, 'UTF-8')), 0, 1) . '____' . utf8_substr(strip_tags(html_entity_decode($resultRelatedKomplect['model'], ENT_QUOTES, 'UTF-8')), -1) . '', 'special_komplect' => $special, 'rating_komplect' => $rating, 'tax_komplect' => $tax, 'reviews_komplect' => sprintf($this->language->get('text_reviews'), (int) $resultRelatedKomplect['reviews']), 'man_info_komplect' => $this->url->link('product/manufacturer/info', 'manufacturer_id=' . $resultRelatedKomplect['manufacturer_id']), 'href_komplect' => $this->url->link('product/product', 'product_id=' . $resultRelatedKomplect['product_id']) ); } // $categories - содержит оприделенный товар найденный по ID $categories = $this->model_catalog_product->getCategories($result['product_id']); // $categories_info - содержит оприделенную категорию найденную по ID $categories_info = $this->model_catalog_category->getCategory($categories[0]['category_id']); // В этом массиве добавляем 'related' и определяем её как вложенный массив сопутствующих товаров, который найден выше $this->data['products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'minimum' => $result['minimum'], 'name' => utf8_substr(strip_tags(html_entity_decode($result['name'], ENT_QUOTES, 'UTF-8')), 0, 26) . '', 'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, 300) . '', 'quantity' => $result['quantity'], 'model' => utf8_substr(strip_tags(html_entity_decode($result['model'], ENT_QUOTES, 'UTF-8')), 0, 20) . '', 'model_no' => utf8_substr(strip_tags(html_entity_decode($result['model'], ENT_QUOTES, 'UTF-8')), 0, 1) . '____' . utf8_substr(strip_tags(html_entity_decode($result['model'], ENT_QUOTES, 'UTF-8')), -1) . '', 'manufacturer' => $result['manufacturer'], 'original' => $result['original'], 'price' => $price, 'zakup_price' => $result['zakup_price'], 'name_group' => $result['name'], 'location' => $result['location'], 'special' => $special, 'tax' => $tax, 'rating' => $result['rating'], 'date_available' => $result['date_available'], 'reviews' => sprintf($this->language->get('text_reviews'), (int) $result['reviews']), 'man_info' => $this->url->link('product/manufacturer/info', 'manufacturer_id=' . $result['manufacturer_id']), 'href' => $this->url->link('product/product', 'product_id=' . $result['product_id']), 'related' => isset($related[$result['product_id']]) ? $related[$result['product_id']] : array(), 'related_neoriginal' => isset($related_neoriginal[$result['product_id']]) ? $related_neoriginal[$result['product_id']] : array(), 'related_komplect' => isset($related_komplect[$result['product_id']]) ? $related_komplect[$result['product_id']] : array(), 'description_dop' => html_entity_decode($categories_info['description_dop'], ENT_QUOTES, 'UTF-8') ); } Также /catalog/model/catalog/product public function getProductRelated($product_id) { $product_data = array(); $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_related pr LEFT JOIN " . DB_PREFIX . "product p ON (pr.related_id = p.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pr.product_id = '" . (int)$product_id . "' AND p.status = '1' AND p.date_available <= '" . $this->NOW . "' AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'"); foreach ($query->rows as $result) { if( $product_id != $result['related_id'] )$product_data[$result['related_id']] = $this->getProduct($result['related_id']); } return $product_data; } /*Neoriginal*/ public function getProductRelatedNeoriginal($product_id) { $product_data = array(); $query_neoriginal = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_related_neoriginal pr LEFT JOIN " . DB_PREFIX . "product p ON (pr.related_id = p.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pr.product_id = '" . (int)$product_id . "' AND p.status = '1' AND p.date_available <= '" . $this->NOW . "' AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'"); foreach ($query_neoriginal->rows as $result_neoriginal) { if( $product_id != $result_neoriginal['related_id'] )$product_data[$result_neoriginal['related_id']] = $this->getProduct($result_neoriginal['related_id']); } return $product_data; } /*komplect */ public function getProductRelatedKomplect($product_id) { $product_data = array(); $query_komplect = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_related_komplect pr LEFT JOIN " . DB_PREFIX . "product p ON (pr.related_id = p.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pr.product_id = '" . (int)$product_id . "' AND p.status = '1' AND p.date_available <= '" . $this->NOW . "' AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'"); foreach ($query_komplect->rows as $result_komplect) { if( $product_id != $result_komplect['related_id'] )$product_data[$result_komplect['related_id']] = $this->getProduct($result_komplect['related_id']); } return $product_data; } теперь смотри у меня есть два товар ! к одному привязаны аналоги Делаем поиск у себя на сайте если я буду искать sn947 то мне покажет два товара все верно ! Теперь скопируем один из оригинальных аналогов и сделаем поиск ! В поиске покажет только тот товар который привязан SN947 но у меня есть еще товар SN947 от другово поставщика как мне его отобразить !? Я долго думал может нужно запрос подправить но потом ведь у меня есть product_id кароче запустался пацаны выручайте
-
Версия 0.2
Шаблон подойдет как для магазина автозапчастей, так и для любой другой тематики. (универсален) В архиве с шаблоном присутствует документация. Установка очень простая. Перед покупкой шаблона советуем посмотреть демонстрационную версию магазина, и убедится в том что он подходит Вам. ПОЛНАЯ ИНСТРУКЦИЯ ПО УСТАНОВКЕ И НАСТРОЙКЕ Для установки шаблона нужно скопировать все файлы из папки нужной версии в корень вашего сайта. Шаблон не трогает системные файлы магазина (кроме двух языковых файлов, не влияющих на работу магазина). Поддержка версий OpenCart: 1.5.5.1 Если Вам нужен этот шаблон, а версия Вашего магазина другая, можете обратиться в ЛС и мы постараемся решить этот вопрос (бесплатно, от версии 1.5.3х) :) Так же для загрузки доступен дамп демо-сайта на версии 1.5.5.1 В документации - указан e-mail для связи с нами. ДЕМОНСТРАЦИЯ ШАБЛОНА CAR Эффекты и полезности в шаблоне CAR: - в модуле категорий эффект при наведении - эффект при наведении на кнопку "Добавить в корзину" - слайдшоу нового вида (по желанию можно включить старый) - блок с виджетами социальных сетей - телефон в шапке сайта - ленточки на товарах со скидкой *Все дальнейшие обновления шаблона - бесплатные.499 руб. -
499 Скачать / Купить дополнение Шаблон магазина автозапчастей (Car) Шаблон подойдет как для магазина автозапчастей, так и для любой другой тематики. (универсален) В архиве с шаблоном присутствует документация. Установка очень простая. Перед покупкой шаблона советуем посмотреть демонстрационную версию магазина, и убедится в том что он подходит Вам. ПОЛНАЯ ИНСТРУКЦИЯ ПО УСТАНОВКЕ И НАСТРОЙКЕ Для установки шаблона нужно скопировать все файлы из папки нужной версии в корень вашего сайта. Шаблон не трогает системные файлы магазина (кроме двух языковых файлов, не влияющих на работу магазина). Поддержка версий OpenCart: 1.5.5.1 Если Вам нужен этот шаблон, а версия Вашего магазина другая, можете обратиться в ЛС и мы постараемся решить этот вопрос (бесплатно, от версии 1.5.3х) :) Так же для загрузки доступен дамп демо-сайта на версии 1.5.5.1 В документации - указан e-mail для связи с нами. ДЕМОНСТРАЦИЯ ШАБЛОНА CAR Эффекты и полезности в шаблоне CAR: - в модуле категорий эффект при наведении - эффект при наведении на кнопку "Добавить в корзину" - слайдшоу нового вида (по желанию можно включить старый) - блок с виджетами социальных сетей - телефон в шапке сайта - ленточки на товарах со скидкой *Все дальнейшие обновления шаблона - бесплатные. Добавил playthetechno Добавлено 26.01.2014 Категория Платные шаблоны
-
Добрый день. Ищу модуль подбора Щеток и Аккумуляторов по модели авто для магазина автозапчастей на ocshop 1.5.6.4.1 Буду рад любой информации. Также ищу базы кроссов.
-
- автозапчасти
- запчасти
- (и ещё 2)
-
Здравствуйте. Мне нужен интернет-магазин запчастей на Opencart. Требования примерно таковы: 1. Электронные каталоги (elcats.ru), на этом сайте есть регистрация. 2. Электронный католог TecDoc 3. Запрос по VIN (марка, модель, год выпуска, двигатель (литраж, лошадиные силы), VIN-номер, контактные данные клиента (эл. почта, телефон), перечень запчастей к заказу) 4. Регистрационные номера клиентов начинаются с 1000 5. Возможность оплаты по банковской карте 6. При оформление заказа в корзине - с доставкой или нет, согласие с договором купли продажи обязательно, без этих пунктов оформление не закончить. Особенно без согласия по договору. 7. Контактные данные организации (адрес, эл. почта, телефоны, часы работы, желательно карта или схема проезда, можно фото пункта выдачи) 8. В регистрационной форме для клиентов должны быть пункты: для физ. лиц - ФИО, эл. адрес, телефон, для юр.лиц - название организации, ИНН, адрес, эл.почта, телефон, контактное лицо. 9. Можно сделать заказ без регистрации, но тогда должно всплывать окно или появляться красная надпись, что клиент лишается дополнительных бонусов которые есть у зарегистрированных покупателей. 10. У покупателя должен быть личный кабинет (баланс, мои заказы, возможность изменения контактных данных) 11. Стоимость доставки расчитывается автоматически от стоимости заказа. 12. Можно еще добавить правила пользования магазином и как оплатить заказ. 13. Поисковая строчка должна быть понятной и находится в удобном месте (например в верхнем правом углу) 14. После ввода в поисковой строке появляются варианты запчастей которые мы можем предложить. В строчке должны быть: код, наименование, количество на складе (не конкретное, а например >5 или <5), срок поставки в рабочих днях, вероятность поставки в процентном соотношении, корзина. Извините, если не совсем точно описал задачу. Оцените, как по срокам и цене получится. Конечно, буду рад поработать с тем, у кого всё это уже сделано на примере работающего магазина. Спасибо