В данном разделе описана последовательность действий, необходимых для построения витрины и поддержания её в актуальном состоянии.
В первую очередь вам понадобится дерево-каталог категорий, на основании которого можно нарисовать меню. Мы детально проработали и предоставляем всем базовое меню. Оно доступно каждому пользователю. При необходимости мы можем добавить персональные меню для каждого пользователя сервиса.
Необходимо совершить следующие действия:
В стандартном сценарии эти действия нужно совершать только один раз, при первом запуске системы. После этого вы можете получить выбранное меню на необходимом языке, с помощью метода GetMenu.
Также, мы рекомендуем периодически(например, раз в 10 минут) проверять меню на наличие обновление. Сделать это можно следующим образом:
После этого вам необходимо получить список доступных вам продуктов с помощью метода GetPriceChanges. Подробно этот процесс описан в разделе синхронизации цен на товары
Ввиду большого количества похожих товаров в системе MONT было введено такое понятие как «Семейство» - логическая сущность для группировки продуктов. В каждом узле полученного ранее дерева есть поле FamilyGroupIds, содержащее список идентификаторов(ид) семейств, привязанных к этой категории. А у каждого продукта, полученного в предыдущем разделе с помощью GetPriceChanges, есть поле FamilyGroupId, в котором содержатся идентификатор семейства, к которому относится продукт. Если вы не хотите использовать семейства при построении своей витрины, пользуясь этими данными, вы можете выполнить привязку продуктов напрямую к категориям.
Базовое меню является общим для всех пользователей и основано на полном каталоге всех продуктов. В том числе и архивных. В таком виде оно годится только для создания библиотеки. А для интернет-магазина весь этот архив мало интересен. На витрине должны быть только те категории, в которых есть хотя бы 1 продукт доступный к продаже. К тому же уменьшение числа ветвей в меню сильно ускорит его отрисовку. Предлагаемый ниже алгоритм является одним из вариантов реализации этой задачи:
Перед тем, как приступить непосредственно к получению описаний, необходимо получить список доступных стран.
Бывают случаи, когда одно и то же семейство/продукт имеет разное описание в разных странах, поэтому нам потребуется определиться со страной.
Для получения списка возможных стран нужно вызвать метод GetAvaliableCountries. Результатом будет список кодов стран.
Важно: стоит отметить тот факт, что понятие страны введено для определенных товаров, которые могут иметь в своем описании(к тому же на разных языках) фактичесие различия от страны к стране. Так как таких товаров немного, то наиболее распространенным кодом страны для всех переводов является код DF - Default. Это значит, что для товара, обладающим таким кодом страны все переводы на различные языки будут одинаковы вне зависимости от страны, за исключением отдельного описания товара с кодом страны не равным DF.
Например: есть описание товара ABC-1111 на RU языке для DF страны и описание для этого же товара на RU языке для UA страны(отличающееся фактически от DF страны).
Все запросы вернуть описание на RU языке для товара ABC-11111 вернут отписание RU-DF.
Например для страны KZ и языка RU - вернется описание RU-DF. Однако для страны UA и языка RU вернется описание RU-UA.
Если при построении витрины вы не планируете пользоваться семействами, то этот раздел вы можете пропустить. Для получения описания одного семейства существует метод GetFamily, в который нужно передать идентификатор семейства, требуемые язык и страну(их получение было описано в начале раздела). Соответственно, для получения описания всех необходимых семейств, нужно вызвать этот метод для каждого семейства, которое есть в обрезанном от пустых веток меню.
Для получения описания одного продукта существует метод GetProduct, в который нужно передать партномер продукта, требуемые язык и страну(их получение было описано в начале раздела). Соответственно, для получения описания всех необходимых продуктов, нужно вызвать этот метод для каждого доступного вам продукта(их список был получен с помощью метода GetPriceChanges)
При интеграции с системой необходимо учитывать, что витрина может поменяться в любой момент. В частности, измениться могут:
Потому мы рекомендуем проверять наличие обновлений раз в 10 минут.
Рекомендуется производить обновление в 2 этапа - обновление меню и обновление описаний.
Обновление меню можно реализовать следующий образом:
Обновление описаний можно реализовать следующим образом: