Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Загрузка и обновление товаров на автомате


Recommended Posts

Всем добрый день.
 

Дано:

  • OpencartPro 2.3 
  • Шаблон дефолт
  • Прайс от поставщика.

Нужно настроить скачивание прайс листа с сервера поставщика, загружать обновлять и добавлять товары.

Ниже постараюсь описать подробнее.

 

1. Вот что дает поставщик - 
Пример php скрипта для загрузки файла
 

Спойлер

<?php
    /**
    * Include PEAR package for sending data with cURL
    * В данном примере используется класс cURL библиотеки PEAR
    */
    require_once('PEAR/Net/Curl.php');

    $curl = new Net_Curl();

    $result = $curl -> create();

    if (PEAR::isError($result))
    {
    	echo 'не могу создать объект Net_Curl';
    	return false;
    }


    $curl->userAgent = 'download xml v.1.0';
    $curl->url = 'http://www.transistor.ru/catalog/transistor_catalog.csv.gz?category=all-categories&onlystock';
    // или: $curl->url = 'http://www.transistor.ru/catalog/transistor_catalog.xml.gz?category=all-categories';
    // или адрес другого нужного вам файла...
    $curl->username = '[Ваш логин]';
    $curl->password = '[Ваш пароль]';
    $curl->proxy = '[Адрес Вашего прокси-сервера, если необходимо]';
    $curl->verifyHost = 0;
    $curl->verifyPeer = false;
    $curl->returnTransfer = true;
    $curl->type = 'POST';
    $curl->fields = array('greeting' => 'hi!'); // Эта строчка должна быть обязательно!


    $result = $curl -> execute();

    $curl -> close();
    if (PEAR::isError($result))
    {
    	@fclose($curl->_fp); //закрываем файл, т.к. сам Net_Curl этого при генерации ошибки не делает
    	echo 'Error: '.$result->getMessage().'<br/>';
    }
    else
    {
    	$gz_filename = '[путь к папке на сервере]'.'transistor_catalog.csv.gz';
    // или:	$gz_filename = '[путь к папке на сервере]'.'transistor_catalog.xml.gz';
    	if(!$handle = fopen($gz_filename, 'w'))
    		echo 'не могу открыть файл для записи на сервере';

    	if(!fwrite($handle, $result))
    		echo 'не могу записать в файл данные';
    	fclose($handle);

    	// Распаковать файл
    	$gzhandle = gzopen($gz_filename, 'r');
    	$handle = fopen(mb_substr($gz_filename, 0, -3), 'w');
    	while (!feof($gzhandle))
    	{
    		$buf = gzread($gzhandle, 8192);
    		fwrite($handle, $buf);
    	}

    	gzclose($gzhandle);
    	fclose($handle);
    }
                    

 

 

2, Вот пример данных о товаре, 

Спойлер

<product>
<article>014965</article> // - Артикул товара
<ean13>4620024048312</ean13>
<category>2</category> // - ID категории
<group>352</group>
<serial/>
<name>Лента RTW 2-5000P 12V Green (3528, 300 LED, LUX)</name> // - Название товара
<developer>ARL</developer> // - Производитель 
<case>4.8 Вт/м, IP66</case> 
<warranty>24</warranty> // - гарантия 
<obsolete>0</obsolete>
<statuses/>
<unit id="006">м</unit>
<package>
<name>Катушка</name>
<qty unit="006">5</qty> // - минимальное кол-во для заказа
<length unit="004">0.28</length> // - длина
<width unit="004">0.236</width> // - ширина
<height unit="004">0.015</height> // - высота
<weight unit="166">0.308</weight> // - вес
<volume unit="113">0.000991</volume> // - объем
</package>
<container>
<name>Транспортная тара</name>
<qty unit="006">250</qty>
<length unit="004">0.41</length><width unit="004">0.41</width><height unit="004">0.26</height><weight unit="166">15.4</weight>
<volume unit="113">0.043706</volume>
</container>
<prices currency="RUB">
<price type="retail">370.26</price> // - цена
</prices>
<instock>
<stock type="free" unit="006">3000</stock> // - кол-во на складе
<status type="possible">-1</status>
</instock>
<arrival/>
<qty type="free">0</qty>
<related>
<article>023028</article> // - Аксессуары - типо сопуствующих товаров
<article>026349</article> // - Аксессуары - типо сопуствующих товаров
</related>
<compatibles> // - Сопуствующие товары 
<article>012095</article>
<article>021648</article>
<article>013874</article>
<article>025490</article>
<article>012092</article>
<article>019190</article>
<article>023719</article>
<article>023722</article>
<article>019333</article>
<article>023720</article>
</compatibles>
<analogues/> // - Аналоги могут быть
<techdata>
<param order="0" id="62"> // - тут далее идут характеристики 
<name>Тип товара</name>
<values total="1">
<value order="0" number="28">Лента</value>
</values>
</param>
<param order="1" id="44">
<name>Класс пылевлагозащиты</name>
<values total="1">
<value order="0" text="IP66">IP66</value>
</values>
</param>
<param order="2" id="1">
<name>Длина волны</name>
<values total="1">
<value order="0" color="green" min="" typ="525" max="">typ: 525 nm</value>
</values>
</param>
<param order="3" id="5">
<name>Угол обзора</name>
<values total="1">
<value order="0" number="120">120 °</value>
</values>
</param>
<param order="4" id="45">
<name>Типоразмер светодиода</name>
<values total="1">
<value order="0" text="3528">3528</value>
</values>
</param>
<param order="5" id="46">
<name>Плотность светодиодов</name>
<values total="1">
<value order="0" number="60">60 шт/м</value>
</values>
</param>
<param order="6" id="23">
<name>Количество светодиодов</name>
<values total="1">
<value order="0" number="300">300 шт</value>
</values>
</param>
<param order="7" id="95">
<name>Мощность на 1м</name>
<values total="1">
<value order="0" min="4" typ="" max="4.8">min: 4 W/m; max: 4,8 W/m</value>
</values>
</param>
<param order="8" id="75">
<name>Мощность</name>
<values total="1">
<value order="0" min="20" typ="" max="24">min: 20 W; max: 24 W</value>
</values>
</param>
<param order="9" id="35">
<name>Мощность, макс.</name>
<values total="1">
<value order="0" number="24">24 W</value>
</values>
</param>
<param order="10" id="20">
<name>Напряжение питания</name>
<values total="1">
<value order="0" number="12">12 V</value>
</values>
</param>
<param order="11" id="3">
<name>Ток потребления</name>
<values total="1">
<value order="0" min="" typ="2" max="">typ: 2 A</value>
</values>
</param>
<param order="12" id="47">
<name>Длина</name>
<values total="1">
<value order="0" number="5000">5 000 мм</value>
</values>
</param>
<param order="13" id="48">
<name>Ширина</name>
<values total="1">
<value order="0" number="11">11 мм</value>
</values>
</param>
<param order="14" id="49">
<name>Высота</name>
<values total="1">
<value order="0" number="5">5 мм</value>
</values>
</param>
<param order="15" id="33">
<name>Минимальный отрезок</name>
<values total="1">
<value order="0" number="50">50 мм</value>
</values>
</param>
<param order="16" id="96">
<name>Серия</name>
<values total="1">
<value order="0" text="3. 5000P">2) P</value>
</values>
</param>
<param order="17" id="148">
<name>Сертификат</name>
<values total="1">
<value order="0" text="РСТ-01461 (1)">РСТ-01461</value>
</values>
</param>
<param order="18" id="153">
<name>Цвет свечения</name>
<values total="1">
<value order="0" color="#0db14b">Зеленый 525nm</value>
</values>
</param>
</techdata>
<files>
<file type="datasheet" mime="application/pdf" modified="2019-10-15T14:35:27+03:00" md5="753e45c11b192cf299d6155da62520a8" id="743DA448CD6C994D89020583124DDD3C">https://assets.transistor.ru/files/743DA448CD6C994D89020583124DDD3C.pdf/Datasheet_014965.pdf</file>
<file type="datasheet" mime="application/pdf" modified="2019-10-11T16:48:18+03:00" md5="b302c326ebd37617a2226a1525bbd0d8" id="1F3C9AFFBA08EE44897D20DFC840F148">https://assets.transistor.ru/files/1F3C9AFFBA08EE44897D20DFC840F148.pdf/Seria_RT_2-5000_3528_60_LED.pdf</file>
<file type="photo" mime="image/jpeg" modified="2019-01-31T17:31:18+03:00" md5="49b37762a98e8e0569cbe76bd2dff3c6" id="C0DA51BA953C294F95D29F67472FA60A">https://assets.transistor.ru/img/product/userlogo/C0DA51BA953C294F95D29F67472FA60A.jpg</file>
<file type="photo" mime="image/jpeg" modified="2019-01-31T17:31:14+03:00" md5="579ea1468ef4f20965eb3593514d44d7" id="B478E45469741E4CB2D38FA934DCB77F">https://assets.transistor.ru/img/product/userlogo/B478E45469741E4CB2D38FA934DCB77F.jpg</file>
<file type="photo-main" mime="image/jpeg" modified="2018-01-30T13:42:40+03:00" md5="c5cb626abb021612bbb2681c21a4bb49" id="705EFD704CE84548BC6E18388468E55D">https://assets.transistor.ru/img/product/userlogo/705EFD704CE84548BC6E18388468E55D.jpg</file>
<file type="image" mime="image/jpeg" modified="2018-01-30T13:42:28+03:00" md5="580163e4a92624e98d63b0b521f84efc" id="10859AA0E85BB148B7A7DB35D03F0821">https://assets.transistor.ru/img/product/userlogo/10859AA0E85BB148B7A7DB35D03F0821.jpg</file>
</files> // Файлы и картинки различаются, файлы нужно просто ссылкой в виде текста грузить...чтобы потом выводить в карточке товара
// - картинки само собой ясно что с ними делать
<cerificate/>
<tnved/>
<tnvedtext/>
<texts>
<text type="descript" mime="text/plain">Гибкая лента LUX, герметичная IP66 (в силиконой трубке), светодиоды smd 3528, 60шт/м (300шт на 5м), красный скотч 3М. Цвет ЗЕЛЁНЫЙ. Питание 12V, мощность 4.8 Вт/м (24 Вт на 5м), угол 120°. Размеры 5000х11x5мм. Мин.отрезок 50мм, 3 шт светодиода. Пакет 5м. Цена за 1м.</text> // - Описание 
</texts>
</product>

 

 

3. Файлы идут в архиве name*.xml.gz 
 

Сколько примерно по цене может стоить настройка для дальнейшего импорта и автоматического обновления и загрузки товаров?
 

Надіслати
Поділитися на інших сайтах


7 часов назад, kikaridza123 сказал:

Всем добрый день.
 

Дано:

  • OpencartPro 2.3 
  • Шаблон дефолт
  • Прайс от поставщика.

Нужно настроить скачивание прайс листа с сервера поставщика, загружать обновлять и добавлять товары.

Ниже постараюсь описать подробнее.

 

1. Вот что дает поставщик - 
Пример php скрипта для загрузки файла
 

  Показать контент


<?php
    /**
    * Include PEAR package for sending data with cURL
    * В данном примере используется класс cURL библиотеки PEAR
    */
    require_once('PEAR/Net/Curl.php');

    $curl = new Net_Curl();

    $result = $curl -> create();

    if (PEAR::isError($result))
    {
    	echo 'не могу создать объект Net_Curl';
    	return false;
    }


    $curl->userAgent = 'download xml v.1.0';
    $curl->url = 'http://www.transistor.ru/catalog/transistor_catalog.csv.gz?category=all-categories&onlystock';
    // или: $curl->url = 'http://www.transistor.ru/catalog/transistor_catalog.xml.gz?category=all-categories';
    // или адрес другого нужного вам файла...
    $curl->username = '[Ваш логин]';
    $curl->password = '[Ваш пароль]';
    $curl->proxy = '[Адрес Вашего прокси-сервера, если необходимо]';
    $curl->verifyHost = 0;
    $curl->verifyPeer = false;
    $curl->returnTransfer = true;
    $curl->type = 'POST';
    $curl->fields = array('greeting' => 'hi!'); // Эта строчка должна быть обязательно!


    $result = $curl -> execute();

    $curl -> close();
    if (PEAR::isError($result))
    {
    	@fclose($curl->_fp); //закрываем файл, т.к. сам Net_Curl этого при генерации ошибки не делает
    	echo 'Error: '.$result->getMessage().'<br/>';
    }
    else
    {
    	$gz_filename = '[путь к папке на сервере]'.'transistor_catalog.csv.gz';
    // или:	$gz_filename = '[путь к папке на сервере]'.'transistor_catalog.xml.gz';
    	if(!$handle = fopen($gz_filename, 'w'))
    		echo 'не могу открыть файл для записи на сервере';

    	if(!fwrite($handle, $result))
    		echo 'не могу записать в файл данные';
    	fclose($handle);

    	// Распаковать файл
    	$gzhandle = gzopen($gz_filename, 'r');
    	$handle = fopen(mb_substr($gz_filename, 0, -3), 'w');
    	while (!feof($gzhandle))
    	{
    		$buf = gzread($gzhandle, 8192);
    		fwrite($handle, $buf);
    	}

    	gzclose($gzhandle);
    	fclose($handle);
    }
                    

 

 

2, Вот пример данных о товаре, 

  Показать контент


<product>
<article>014965</article> // - Артикул товара
<ean13>4620024048312</ean13>
<category>2</category> // - ID категории
<group>352</group>
<serial/>
<name>Лента RTW 2-5000P 12V Green (3528, 300 LED, LUX)</name> // - Название товара
<developer>ARL</developer> // - Производитель 
<case>4.8 Вт/м, IP66</case> 
<warranty>24</warranty> // - гарантия 
<obsolete>0</obsolete>
<statuses/>
<unit id="006">м</unit>
<package>
<name>Катушка</name>
<qty unit="006">5</qty> // - минимальное кол-во для заказа
<length unit="004">0.28</length> // - длина
<width unit="004">0.236</width> // - ширина
<height unit="004">0.015</height> // - высота
<weight unit="166">0.308</weight> // - вес
<volume unit="113">0.000991</volume> // - объем
</package>
<container>
<name>Транспортная тара</name>
<qty unit="006">250</qty>
<length unit="004">0.41</length><width unit="004">0.41</width><height unit="004">0.26</height><weight unit="166">15.4</weight>
<volume unit="113">0.043706</volume>
</container>
<prices currency="RUB">
<price type="retail">370.26</price> // - цена
</prices>
<instock>
<stock type="free" unit="006">3000</stock> // - кол-во на складе
<status type="possible">-1</status>
</instock>
<arrival/>
<qty type="free">0</qty>
<related>
<article>023028</article> // - Аксессуары - типо сопуствующих товаров
<article>026349</article> // - Аксессуары - типо сопуствующих товаров
</related>
<compatibles> // - Сопуствующие товары 
<article>012095</article>
<article>021648</article>
<article>013874</article>
<article>025490</article>
<article>012092</article>
<article>019190</article>
<article>023719</article>
<article>023722</article>
<article>019333</article>
<article>023720</article>
</compatibles>
<analogues/> // - Аналоги могут быть
<techdata>
<param order="0" id="62"> // - тут далее идут характеристики 
<name>Тип товара</name>
<values total="1">
<value order="0" number="28">Лента</value>
</values>
</param>
<param order="1" id="44">
<name>Класс пылевлагозащиты</name>
<values total="1">
<value order="0" text="IP66">IP66</value>
</values>
</param>
<param order="2" id="1">
<name>Длина волны</name>
<values total="1">
<value order="0" color="green" min="" typ="525" max="">typ: 525 nm</value>
</values>
</param>
<param order="3" id="5">
<name>Угол обзора</name>
<values total="1">
<value order="0" number="120">120 °</value>
</values>
</param>
<param order="4" id="45">
<name>Типоразмер светодиода</name>
<values total="1">
<value order="0" text="3528">3528</value>
</values>
</param>
<param order="5" id="46">
<name>Плотность светодиодов</name>
<values total="1">
<value order="0" number="60">60 шт/м</value>
</values>
</param>
<param order="6" id="23">
<name>Количество светодиодов</name>
<values total="1">
<value order="0" number="300">300 шт</value>
</values>
</param>
<param order="7" id="95">
<name>Мощность на 1м</name>
<values total="1">
<value order="0" min="4" typ="" max="4.8">min: 4 W/m; max: 4,8 W/m</value>
</values>
</param>
<param order="8" id="75">
<name>Мощность</name>
<values total="1">
<value order="0" min="20" typ="" max="24">min: 20 W; max: 24 W</value>
</values>
</param>
<param order="9" id="35">
<name>Мощность, макс.</name>
<values total="1">
<value order="0" number="24">24 W</value>
</values>
</param>
<param order="10" id="20">
<name>Напряжение питания</name>
<values total="1">
<value order="0" number="12">12 V</value>
</values>
</param>
<param order="11" id="3">
<name>Ток потребления</name>
<values total="1">
<value order="0" min="" typ="2" max="">typ: 2 A</value>
</values>
</param>
<param order="12" id="47">
<name>Длина</name>
<values total="1">
<value order="0" number="5000">5 000 мм</value>
</values>
</param>
<param order="13" id="48">
<name>Ширина</name>
<values total="1">
<value order="0" number="11">11 мм</value>
</values>
</param>
<param order="14" id="49">
<name>Высота</name>
<values total="1">
<value order="0" number="5">5 мм</value>
</values>
</param>
<param order="15" id="33">
<name>Минимальный отрезок</name>
<values total="1">
<value order="0" number="50">50 мм</value>
</values>
</param>
<param order="16" id="96">
<name>Серия</name>
<values total="1">
<value order="0" text="3. 5000P">2) P</value>
</values>
</param>
<param order="17" id="148">
<name>Сертификат</name>
<values total="1">
<value order="0" text="РСТ-01461 (1)">РСТ-01461</value>
</values>
</param>
<param order="18" id="153">
<name>Цвет свечения</name>
<values total="1">
<value order="0" color="#0db14b">Зеленый 525nm</value>
</values>
</param>
</techdata>
<files>
<file type="datasheet" mime="application/pdf" modified="2019-10-15T14:35:27+03:00" md5="753e45c11b192cf299d6155da62520a8" id="743DA448CD6C994D89020583124DDD3C">https://assets.transistor.ru/files/743DA448CD6C994D89020583124DDD3C.pdf/Datasheet_014965.pdf</file>
<file type="datasheet" mime="application/pdf" modified="2019-10-11T16:48:18+03:00" md5="b302c326ebd37617a2226a1525bbd0d8" id="1F3C9AFFBA08EE44897D20DFC840F148">https://assets.transistor.ru/files/1F3C9AFFBA08EE44897D20DFC840F148.pdf/Seria_RT_2-5000_3528_60_LED.pdf</file>
<file type="photo" mime="image/jpeg" modified="2019-01-31T17:31:18+03:00" md5="49b37762a98e8e0569cbe76bd2dff3c6" id="C0DA51BA953C294F95D29F67472FA60A">https://assets.transistor.ru/img/product/userlogo/C0DA51BA953C294F95D29F67472FA60A.jpg</file>
<file type="photo" mime="image/jpeg" modified="2019-01-31T17:31:14+03:00" md5="579ea1468ef4f20965eb3593514d44d7" id="B478E45469741E4CB2D38FA934DCB77F">https://assets.transistor.ru/img/product/userlogo/B478E45469741E4CB2D38FA934DCB77F.jpg</file>
<file type="photo-main" mime="image/jpeg" modified="2018-01-30T13:42:40+03:00" md5="c5cb626abb021612bbb2681c21a4bb49" id="705EFD704CE84548BC6E18388468E55D">https://assets.transistor.ru/img/product/userlogo/705EFD704CE84548BC6E18388468E55D.jpg</file>
<file type="image" mime="image/jpeg" modified="2018-01-30T13:42:28+03:00" md5="580163e4a92624e98d63b0b521f84efc" id="10859AA0E85BB148B7A7DB35D03F0821">https://assets.transistor.ru/img/product/userlogo/10859AA0E85BB148B7A7DB35D03F0821.jpg</file>
</files> // Файлы и картинки различаются, файлы нужно просто ссылкой в виде текста грузить...чтобы потом выводить в карточке товара
// - картинки само собой ясно что с ними делать
<cerificate/>
<tnved/>
<tnvedtext/>
<texts>
<text type="descript" mime="text/plain">Гибкая лента LUX, герметичная IP66 (в силиконой трубке), светодиоды smd 3528, 60шт/м (300шт на 5м), красный скотч 3М. Цвет ЗЕЛЁНЫЙ. Питание 12V, мощность 4.8 Вт/м (24 Вт на 5м), угол 120°. Размеры 5000х11x5мм. Мин.отрезок 50мм, 3 шт светодиода. Пакет 5м. Цена за 1м.</text> // - Описание 
</texts>
</product>

 

 

3. Файлы идут в архиве name*.xml.gz 
 

Сколько примерно по цене может стоить настройка для дальнейшего импорта и автоматического обновления и загрузки товаров?
 

Здравствуйте.
Все зависит от ваших требований. И есть ли у вас модуль АОП сейчас эту задачу легче и дешевле сделать через него.
Просто перед тем как подавать прайс на модуль подаем его на скрипт который распакует.

У вас есть модуль АОП ?

Надіслати
Поділитися на інших сайтах

Чете я вообще туплю, у вас прям готовый скрипт который выкачивает прайс.
Все что вам нужно это настроить прием его через АОП, и выполнение по крону.
1. В чес ночи выполняется приведенный скрипт выше. Только указываете что бы он клал прайс в /admin/uploads/
2. В два ночи запускается крон у аоп. И полетели.

Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.