Дано Допустим у нас есть интернет-магазин, где мы вручную ввели некий набор товаров, слегка уникализируя названия и написав свои неповторимые в интернете описания с целью более удачного SEO. Отметим сразу, что магазин пока не использует артикулы, коды производителя, штрихкоды и тому подобные цифро-буквенные идентификаторы товаров. То есть бизнес ещё на уровне примитивной перепродажи товара с ненаших складов.
Теперь предположим, есть партнёр с очень, но не абсолютно похожим ассортиментом, на прайс которого - а более точно, на его цены и складские остатки - мы планируем ориентироваться.
Хотелось бы понять, как нам синхронизировать цены и остатки при минимальных телодвижениях с нашей стороны. Ведь те же товары у нас названы иначе, а постоянно парсить сайт партнёра неохота. Тем более что там свободно доступен прайс в формате xls, и того малого количества колонок (код, товар, остаток, цена) в прайсе вроде бы достаточно для синхронизации.
Отвечаем на вопрос
Тут нам поможет демонстрация начального шага в виде скриншота. Красным цветом отмечены этапы этого шага, а зелёным и коричневым - начальные соображения к подготовке варианта импорта. Подробности этих соображений будут изложены ниже.
То есть мы всякий раз скачиваем с сайта партнёра его прайс. Обычно такой xls располагается на сайтах по адресу наподобие http://имя.сайта/pricelist.xls и значит первый шаг - скачивание - в принципе можно автоматизировать. Затем открываем скачанный прайс в программе Microsoft Excel и просто сохраняем как CSV в кодировке UTF-8 - видимо, кто отлично владеет темой "Эксель", макросами и прочими самодействующими плюшками, смог бы автоматизировать и этот шаг.
И вот этот csv-файл уже импортируем на свой сайт через пункт админпанели разное » Варианты импорта - здесь предварительно создадим необходимый вариант.
Наверное дальше следует изложить логические заключения, предшествовавшие созданию варианта импорта.
Вариант импорта
Вопрос к картинке выше: Почему нам интересен товарный код партнёра?
Если в своих товарах мы пропишем такой же артикул как у партнёра, и будем использовать артикул только для внутренних целей (то есть не показывая на лицевой стороне сайта), то сразу решим вопрос какой-то уникальной привязки партнёрской товарной позиции к нашей позиции. Ведь как было сказано в исходных данных, названия товаров мы написали по-своему, и эти названия не совпадают с партнёрскими, следовательно использовать их для сопоставления позиций будет проблематично.
Вопрос к картинке выше: Почему плевать на остальные колонки прайса?
У нас база товаров уже набита, а товары могли быть названы иначе, чем записаны названия в 3-ей колонке партнёрского прайса. Чтобы мы не затёрли свои труды чужими названиями товаров, то с помощью мнемоники skip приказываем создаваемому варианту импорта вообще пропускать такие ячейки.
Однако хотелось бы ещё сделать так, чтобы если у нас нет такого товара, то его название на первое время бралось бы из партнёрского прайса, пока менеджер не промодерирует название/описание товара по нашим правилам. Значит мнемонику skip в 3-ей колонке мы меняем на мнемонику model - это название товара, и следом за ней добавляем значок ~ (тильда), который обозначает "мнемоника действует только для новых товаров".
Таким образом, для будущего варианта импорта получаем следующую последовательность мнемоник, которая означает "в товаре с этим АРТИКУЛОМ установить КОЛИЧЕСТВО и ЦЕНУ, а если товара нет, то создать и установить ему ещё это НАЗВАНИЕ":
skip, sku, model~, quantity, price, skip, skip
Теперь сюда осталось добавить команды отклонения нетоварных строк прайса, чтобы оградить менеджера от лишней работы по вырезанию мусора при сохранении CSV. Мы просто наделим импорт небольшим "разумом" с помощью этих команд.
Одна вот такая команда [-] - её можно объяснить как "минус пустые" - отсеит мусорные строки, где в процессе импорта вдруг встречается пустая ячейка кода или пустая ячейка названия.
Вторая команда [-Код] - её можно объяснить как "минус содержащие слово Код" - отсеит мусорную строку 9.
Изложенные только что соображения продемонстрированы на следующем скриншоте.
Давайте теперь взглянем на конечный список мнемоник, который означает уже следующее:
- игнорировать строки с пустым АРТИКУЛОМ или НАЗВАНИЕМ
- игнорировать строки с АРТИКУЛОМ равным Код
- такие записи КОЛИЧЕСТВА заменить такими числами
- в товаре с таким АРТИКУЛОМ установить КОЛИЧЕСТВО и ЦЕНУ
- а если товара нет, создать и установить ему ещё это НАЗВАНИЕ
skip, sku [-] [-Код], model~ [-], quantity [в наличии:1] [мало:10] [много:100] [*:0], price, skip, skip
Наконец мы готовы создать вариант импорта, подходящий для синхронизации цен. Параметры этого варианта показаны на скриншоте админпанели.
Но сначала ОДИН РАЗ придётся прописать партнёрские артикулы у наших товаров. Иначе этот вариант импорта при ПЕРВОМ ЗАПУСКЕ нафигачит к существующим безартикульным товарам большое множество партнёрских товаров, только с артикулами.