...
Такой подход позволит локализовать логику поиска и сервисы будут отвечать за логику отображения страницы.
Карточка товара
При первом открытии карточки, нужно использовать метод: http://docs.otapi.net/ru/Documentations/Method?name=BatchGetSimplifiedItemFullInfo , нужно передавать следующие blockList: RootPath,Vendor,MostPopularVendorItems16,Description
Отображаем карточку товара:
- Хлебные крошки категорий для данного товара (RootPath).
- Название (Item.Title).
- Видео (Item.Videos) и фото (фото представлены в трех размерах: маленький, средний, большой), в качестве главного фото, всегда показываем первое изображение из списка.
- По желанию можно показать особенности товара (показываем все Item.Features у которых есть DisplayName) и вес товара (Item.Weight).
- По желанию можно показать информацию о продавце Vendor и его несколько товаров VendorItems.
- Все характеристики товара (Item.Properties) и описание товара (Description) занимают большую часть экрана, их обычно отображают в конце карточки.
- Отображаем список всех конфигураций товара (Item.Configurators, где Item.Configurators.Property - это свойство, а Item.Configurators.Property.Value - значение свойства).
Если есть атрибут MultiInputPropertyId узла Item.Configurators.Property, данное свойство необходимо нарисовать в виде таблицы, с возможностью выбрать количество каждого значения этого свойства, пример: https://www.screencast.com/t/Ye5kaULlmWJ .
Отображаем цену товара:
используем метод: http://docs.otapi.net/ru/Documentations/Method?name=BatchGetSimplifiedItemConfigurationInfo , нужно передавать следующие blockList: AdditionalPrices (первый раз запрос можно сделать с пустым xmlRequest)
- Проверяем возможность купить данный товар и причину отказа от покупки (Configuration.Availability).
- Отмечаем какие свойства выбраны пользователем (Configuration.Configurators.Property.Value - Selected="true"), а какие не доступны для выбора (Configuration.Configurators.Property.Value - Disabled="true").
- Отображаем зависимость цены от количества (если пришел узел QuantityRanges).
- Если пришел узел MultiInputConfigurations, то показываем цену каждой конфигурации из MultiInputConfigurations, иначе показываем цену из узла Current:
- Price - цена за 1шт. (если есть атрибуты Min и Max - то нужно показать не одну цену, а диапазон цен)
- OldPrice - цена без скидки за 1шт. (если скидки нет, узел отсутствует)
- DiscountPercent - процент скидки для OldPrice. (если скидки нет, узел отсутствует)
- InternalDelivery - цена внутренней доставки (если узел отсутствует, показывать не надо)
- AvailableQuantity - доступное количество для покупки.
- Выводим итоговую стоимость из узла TotalCost.
- Добавляем информацию о возможной добавочной стоимости (AdditionalPrices).
Предоставляем покупателю возможность выбирать конфигурацию и её количество (если MultiInputPropertyId нет - то поле для ввода количество одно, если MultiInputPropertyId есть - для каждого значения свойства MultiInputPropertyId можно ввести своё количество). После каждого "изменения свойства" и "изменения количества", отправляем новый запрос BatchGetSimplifiedItemConfigurationInfo с указанием выбранной пользователем конфигурации и количества, примеры xmlRequest:
Раскрыть | ||
---|---|---|
| ||
<Request />
равнозначен
<Request>
<Current />
</Request>
равнозначен
<Request>
<Current Quantity="1" />
</Request> |
Раскрыть | ||
---|---|---|
| ||
<Request>
<Current Quantity="5" />
</Request>
Запрос на текущие опции:
<Request>
<Current ConfigurationId="идКонфигурации" />
</Request>
или
<Request>
<Current ConfigurationId="идКонфигурации" Quantity="5" />
</Request>
или
<Request>
<Current>
<Property Id="идЦвета" ValueId="идКрасного"
</Current>
</Request>
или
<Request>
<Current>
<Property Id="идЦвета" ValueId="идКрасного"
<Property Id="идРазмера" ValueId="идСреднего"
</Current>
</Request>
или
<Request>
<Current Quantity="5">
<Property Id="идЦвета" ValueId="идКрасного"
<Property Id="идРазмера" ValueId="идСреднего"
<Property Id="идМодели" ValueId="идНекойМодели"
</Current>
</Request> |
Раскрыть | ||
---|---|---|
| ||
<Request>
<Completed ConfigurationId="идКонфигурации" Quantity="1" />
<Completed ConfigurationId="идКонфигурации" Quantity="2" />
...
</Request>
или
<Request>
<Completed Quantity="1">
<Property Id="идЦвета" ValueId="идКрасного"
<Property Id="идРазмера" ValueId="идСреднего"
</Completed>
<Completed Quantity="2">
<Property Id="идЦвета" ValueId="идЗеленого"
<Property Id="идРазмера" ValueId="идСреднего"
</Completed>
...
</Request>
Запрос со всем вместе может быть любой комбинацией других видов запросов, например:
<Request>
<Current Quantity="5">
<Property Id="идЦвета" ValueId="идКрасного"
</Current>
<Completed Quantity="2">
<Property Id="идЦвета" ValueId="идЗеленого"
<Property Id="идРазмера" ValueId="идСреднего"
</Completed>
</Request> |