(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

Импорт данных в интернет-магазины: алгоритм, который упростит вам жизнь

Источник: habrahabr
Николай Кекиш

Почему единственным эффективным способом в долгосрочной перспективе является разработка собственных модулей импорта данных в каждый интернет-магазин (имеется в виду прямой импорт в базу данных конкретной CMS). В первую очередь, полностью контролируется код модулей импорта, всегда можно оперативно внести изменения. Второе, что тоже очень важно, - это интеграция модулей в линейку ПО. Что особенного в модулях импорта? Это большое количество параметров, которые влияют на процесс импорта данных. Ниже приведена упрощенная схема алгоритма импорта данных в модулях CatalogLoader. 

Алгоритм импорта данных в интернет-магазин

Реализация

На следующем изображении показан стандартный диалог выгрузки из ПО CatalogLoader в OpenCart:

Стандартные параметры для OpenCart:
- Отключать товары (определяет возможность отключать "исчезнувшие" товары).
- Префикс артикулов, которые не нужно обновлять.
- Префикс базы данных.
- Путь к файлу Catalogloader_handler.php.
- Путь к файлу delete_cache.php (характерно именно для OpenCart).
Стоит отметить, что стандартный модуль импорта, который предоставляется пользователям, не обладает всем набором параметров, доступных в алгоритме. Это сделано сознательно для того, чтобы не загромождать интерфейс и чтобы у пользователей не возникало дополнительных вопросов. Этих параметров достаточно для подавляющего большинства проектов. И только части необходимы специальные параметры, которые доступны в специальном режиме. 

На следующем изображении показан стандартный диалог выгрузки в Битрикс через протокол 1С-Exchange:

Особенности:
- поддержка протокола 1С-Exchange.
- поддержка режима "отладки". Часто этот режим является единственным вариантом импорта в Битрикс.

Принцип алгоритма

Принцип алгоритма построен на следующей идее. Входными данными для алгоритма является локальная база данных с новым состоянием интерент-магазина (мы это называем КЛП-базой). Т.е. после завершения процесса импорта КЛП-база "перетечет" в требуемую базу данных CMS. Полностью или нет, с какими-то особенностями или нет - это уже зависит от настроек самого процесса импорта данных, которые определяет пользователь.

Ниже приведены техническая информация, которая будет интересна интеграторам и разработчикам, - параметры, которые влияют на ход процесса импорта данных.

CmsEngine строковая переменная [значение по умолчанию("")]
Определяет CMS интернет-магазина. Возможные значения: bitrix, commerceml, magento, insales, prestashop, vamshop, opencart, hostcms, shopcms, shopscript, virtuemart, joomshoping, simpla и т.д.

ModeIsDisable логическая переменная [значение по умолчанию(false)]
Включает режим, который будет деактивировать товары, которых нет в нашей КЛП-базе. 

DbPrefix строковая переменная [значение по умолчанию("")]
Определяет префикс базы данных интернет-магазина.

HttpTunnelLink строковая переменная [значение по умолчанию("")]
Определяет ссылку, которая служит интерфейсом передачи данных между CatalogLoader и интернет-магазином. 
Возможные варианты: ссылка на скрипт CatalogLoader_hanpler.php, ссылка на скрипт 1c_exchange.php для передачи по CommerceML протоколу.

HttpTunnelDelay числовая переменная [значение по умолчанию(0)]
Определяет задержку между запросами, которые идут на интерфейс, определенный в HttpTunnelLink. Это нужно, если сайт расположен на слабом хостинге и активные действия со стороны CatalogLoader (частые вызовы) останавливают работу сайта (CPU limit, например).

HttpImageWebDownloaderLink строковая переменная [значение по умолчанию("")]
Определяет ссылку на скрипт закачки изображений на хостинг интернет-магазина.
Для таких cms, как Битрикс, insales не требуется.

HttpImageWebDownloaderLinkSaveToFile логическая переменная [значение по умолчанию(false)]
Запрещает загрузку изображений по интерфейсу, определенному в HttpImageWebDownloaderLink, и сохраняет все параметры вызова этого интерфейса в файл в папке с программой CatalogLoader. Это необходимо, когда стоит потребность отложить загрузку изображений на будущее.

SqlConnectionString строковая переменная [значение по умолчанию("")]
Определяет Connectionстроковая переменная базы данных интернет-магазина. Это позволяет значительно увеличить скорость загрузки данных. 
строковая переменная ShopUser [значение по умолчанию("")]
Определенный логин пользователя (обычно это админ) в целевом интернет-магазине.
Доступно для: bitrix в режиме 1c-exchange, insales.

ShopPassword строковая переменная [значение по умолчанию("")]
Определенный пароль пользователя (обычно это админ) в целевом интернет-магазине.
Доступно для: bitrix в режиме 1c-exchange, insales.

CategoryNameForImportAll строковая переменная [значение по умолчанию("")]
Определяет категорию, в которую будут определены все "новые" товары для интернет-магазина. Иногда требуется все новые товары импортировать в категорию "Новинки", а старые товары просто обновлять.
Замечание: не работает для bitrix, commerceml.

PriceUpdate логическая переменная [значение по умолчанию(true)]
Определяет поведение функции обновления товара, при котором цена товара не изменяется программой CatalogLoader. Это нужно, когда администратор сайта самостоятельно выставляет цены на товар.

MissedProductIsDisabled логическая переменная [значение по умолчанию(true)]
Определяет режим деактивации продуктов. Если значение "true", то деактивация продукта означает реальную деактивацию (товар остается в БД и помечается как неактивный), иначе товар будет удален из магазина ПО CatalogLoader. (НЕ ПОНЯЛА)

MissedProductProcess логическая переменная [значение по умолчанию(true)]
Определяет поведение функции деактивации товаров. Если значение "true", то товары, которые присутствуют в БД интернет-магазина и отсутствуют в КЛП-файле, будут деактивированы, иначе ни к одному товару, который отсутствует, не будет применена функция деактивации товара.
логическая переменная MissedCombinationIsDisabled [значение по умолчанию(true)]
Определяет поведение функции деактивации комбинаций товаров. Если значение "true", то комбинации товаров, которые присутствуют в БД интернет-магазина и отсутствуют в КЛП-файле, будут деактивированы, иначе следует удаление из БД.

CustomParameters строковая переменная [значение по умолчанию("")]
Определяются параметры, специфичные для какой-то конкретной CMS. Например, для prestashop значение этого параметра может быть id_lang=7, означающее, что нужно импортировать текстовые данные товаров в язык интернет-магазина под номером семь.

CallUrlOnStart строковая переменная [значение по умолчанию("")]
Определяет http ссылку, которая будет вызвана из ПО CatalogLoader (get запрос) перед стартом процесса импорта. Обычно используется для создания резервной копии БД.

CallUrlOnFinish строковая переменная [значение по умолчанию("")]
Определяет http-ссылку, которая будет вызвана из ПО CatalogLoader (get запрос) после завершения процесса импорта. Обычно используется для очистки кэша или создания резервной копии БД.

ProductsUpdateSkip логическая переменная [значение по умолчанию(false)]
Определяет поведение функции обновления товаров. Если установлено значение "false", то для продукта применяется функция обновления, иначе - нет.

CustomerProductSkuTemplate строковая переменная [значение по умолчанию("")]
Определяет шаблон (регулярное выражение), с помощью которого можно определить товар, который был внесен в интернет-магазин вручную, а не через ПО CatalogLoader. Если шаблон определен, то товары, артикул которых подходит под шаблон, исключаются из выборки товаров, к которым должна быть применена функция "Деактивация".
Например, CustomerProductSkuTemplate=CUS_

ImagesUpdate логическая переменная [значение по умолчанию(false)]
Определяет поведение функции обновления изображений. Если значение "false", то изображения не обновляются, в обратном случае обновляются полностью, при этом предварительно автоматически удаляются все изображения обрабатываемого продукта. Обычно этот параметр необходимо выставлять однократно в "true" при некачественной заливке фотографий в предыдущих итерациях обновления.

ImagesUpdateMissed логическая переменная [значение по умолчанию(false)]
Определяет поведение функции обновления изображений. Если значение "false", то изображения не обновляются, иначе обновляются в режиме добавления. Cперва программа определяет изображения, которые уже есть у товара и только после этого добавляет требуемые "новые" изображения товару. Обычно этот параметр необходимо выставлять один раз в "true" при некачественной заливке фотографий в предыдущих итерациях обновления.
Доступно для: prestashop.

MiminumProductsCountInSet числовая переменная [значение по умолчанию(0)]
Определяет минимальное количество товаров. Если значение параметра больше нуля, то ПО CatalogLoader не начнет работу процесса импорта товаров, если в обрабатываемом КЛП-файле находится меньше товаров, чем определено параметром.

Конечно, везде есть много нюансов, не всегда и не для каждой CMS получается поддержать все параметры алгоритма. Это может быть обусловлено протоколом обмена, архитектурой базы данных или особенностями реализации CMS. Представленный подход позволяет достаточно гибко настраивать процессы импорта данных в интернет-магазины и справляется с большими объемами данных до сотен тысяч позиций. 

Данный подход был реализован для импорта данных в следующие CMS:

Ссылки по теме


 Распечатать »
 Правила публикации »
  Написать редактору 
 Рекомендовать » Дата публикации: 22.04.2014 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
КОМПАС-3D v17 Home
Panda Mobile Security - ESD версия - на 1 устройство - (лицензия на 1 год)
Quest Software. TOAD Professional Edition
VMware Workstation Pro 12 for Linux and Windows, ESD
SAP Crystal Reports 2008 INTL WIN NUL License
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Безопасность компьютерных сетей и защита информации
Информационные технологии: CASE, RAD, ERP, OLAP
OS Linux для начинающих. Новости + статьи + обзоры + ссылки
Программирование в AutoCAD
Мир OLAP и Business Intelligence: новости, статьи, обзоры
Один день системного администратора
Все о PHP и даже больше
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100