Вход • Регистрация

Импорт товаров csv по расписанию cron

  • 29 сентября 2014 г.
  • Добрый день коллеги!
    Стала передо мной не совсем тривиальная задача синхронизации каталога с XML поставщика.

    Думаю правильнее сделать парсер XML,ки в csv, а в Диафане импортировать данную CSV через модуль импорта экспорта.
    Вот думаю как к этому модулю как-то подать CSVшку в кач-ве артумента и засунуть все это дело в CRON

    В какую сторону копнуть даже не знаю. Кто что посоветует?
    • 29 сентября 2014 г.
    • Содайте в папке shop файлик shop.crone.php , опишите в нём ваши действия, а затем его можно вызвать http://site.ru/shop/crone ( если псевдассылка у вашего магазина shop) и потом соответственно добавить в задания крон на сервере, что то наподобии /usr/bin/wget -O /dev/null http://site.ru/shop/crone
      • 29 сентября 2014 г.
      • Как в крон повесить я знаю :)
        Мне бы скормить csv модулю импорта диафана как-то не из под графического интерфейса, так скажем :)
        • 29 сентября 2014 г.
        • ответил в вашей второй теме, не видели? )
          • 29 сентября 2014 г.
          • а там тему удалили видать. Сообщения ваши болтаются не привязанные ни к чему.
            • 29 сентября 2014 г.
            • Из тех, кто может удалить тему есть два человека, я и автор темы.
              Я темы на форуме в принципе не удалял очень давно. Так что это автор сам её убил, если Вы на меня намекаете.
              • 30 сентября 2014 г.
              • Виталий, все нормально. Никто на Вас бочку не катил. Марина тоже решила, что я в числе изливающих негатив. И вообще у меня сегодня прекрасное настроение было весь день - дан старт осуществлению моей давней неслабой мечты
        • 29 сентября 2014 г.
        • создаете файл в каталоге shop, с именем например shop.imp.php
          внутри
          Код

          include dirname(dirname(dirname(__FILE__))).'/modules/shop/admin/shop.admin.import.php';

          imp($res_csv, $this->diafan);

          function imp($fl, $df){
          $shop_admin_import = new Shop_admin_import($df);
          $df->_route->cat = 1; // категория импорта в админке
          $shop_admin_import->upload(dirname(dirname(dirname(__FILE__))).$fl);
          }



          потом

          Код
          /usr/bin/wget http://site.com/shop/imp/ >/dev/null 2>&1

          • 10 ноября 2014 г.
          • Подскажите пожалуйста:
            имя csv файла соответственно в переменную $res_csv?
            в кукую директорию нужно класть csv?
            категория импорта в админке указывается просто по ID или писать cat1 например?

            Я сделал вот так:

            Код
            <?php

            include dirname(dirname(dirname(__FILE__))).'/modules/shop/admin/shop.admin.import.php';

            imp('import_cat_test.csv', $this->diafan);

            function imp($fl, $df){
            $shop_admin_import = new Shop_admin_import($df);
            $df->_route->cat = 2; // категория импорта в админке
            $shop_admin_import->upload($fl);
            }

            ?>


            Вызывал из браузера. Файл клал как в папку со скриптом, так и в корень сайта.

            Спасибо!
  • 30 сентября 2014 г.
  • А текущая версия модуля импорта CSV умеет тянуть картинки с url других сайтов?

    В документации не написано, а проверять лень
    • 01 октября 2014 г.
    • Умеет
      • 28 ноября 2014 г.
      • Виталий, поясните пожалуйста как. URL картинок в CSV выгрузке ставить нельзя. Может есть незадокументрованная ф-ия?
        • 28 ноября 2014 г.
        • Почему нельзя-то? Буквально вчера делал импорт на одном сайте, там вообще url левого сайта-поставщика были, все картинки вытянулись.
          • 29 ноября 2014 г. , редакция: 29 ноября 2014 г.
          • А в какое поле импорта?
            "имена изображений"? Кроме него там ничего для картинок нету. При указании полного URL он все равно в файловую систему хостинга долбится.

            Код

            Ошибка в строке 1: "temp";"logo.png";
            p, images: Файл /home/c/citygiftru/public_html/https://userdiafanru/img/top/logo.png не найден
            • 29 ноября 2014 г.
            • Ну как же "нету"? Если долбится в файловую систему хостинга, то кладете изображения всей жменей в папку
              /home/c/citygiftru/public_html/img-for-import/
              Вот здесь:
              http://joxi.ru/Dr8Nen6ho7OE26
              пишете img-for-import/
              И затем в CSV только имена файлов
              • 30 ноября 2014 г. , редакция: 30 ноября 2014 г.
              • Я имел виду, что у меня сайт на одном домене, а картинки я хочу тянуть с другого домена, указывая в csv полный url картинки на другом домене.
                Вот мне приходится парсить xml поставщика и тянуть картинки к себе на хостинг, а картинок полтора гига только с одного поставщика. Очень неудобно. Хотелось бы тянуть прямо с поставщика при импорте.
  • 15 августа 2018 г. , редакция: 15 августа 2018 г.
  • Добрый день,
    подскажите, пытаюсь реализовать импорт товаров из csv файла который лежит на хостинге в корне сайта https://mik-zap.ru

    Создал в папке 'https://mik-zap.ru/modules/shop/ файл shop.imp.php

    Код

    <?php

    include dirname(dirname(dirname(__FILE__))).'/modules/shop/admin/shop.admin.import.php';

    imp('https://mik-zap.ru/test.csv', $this->diafan);

    function imp($fl, $df){
    $shop_admin_import = new Shop_admin_import($df);
    $df->_route->cat = 5; // категория импорта в админке
    $shop_admin_import->upload($fl);
    }
    ?>


    Пытаюсь запустить файл
    https://mik-zap.ru/modules/shop/shop.imp.php
    https://mik-zap.ru/shop/shop.imp.php
    https://mik-zap.ru/shop/imp

    в ответ 404

    возможно дело в том, что псевдоссылка у моего "shop" у меня "katalog"

    https://mik-zap.ru/modules/katalog/shop.imp.php
    https://mik-zap.ru/katalog/shop.imp.php
    https://mik-zap.ru/katalog/imp

    снова 404

    Правильно ли я понимаю, что "категория импорта в админке" это id описания файла импорта?



    Положил файл shop.imp.php в корень - вызвал - выдал ошибку что не может найти shop.admin.import.php
    заменил путь к нему на полный
    Код

    include 'https://mik-zap.ru/modules/shop/admin/shop.admin.import.php';


    запускаю https://mik-zap.ru/shop.imp.php - снова 404

  • 15 августа 2018 г.
  • Посоветовали добавить define('DIAFAN', 1);

    Не помогло, один фиг 404
    код сейчас такой

    Код
    <?php
    define('DIAFAN', 1);
    include dirname(dirname(dirname(__FILE__))).'/modules/shop/admin/shop.admin.import.php';

    imp('https://mik-zap.ru/test.csv', $this->diafan);

    function imp($fl, $df){
    $shop_admin_import = new Shop_admin_import($df);
    $df->_route->cat = 5; // категория импорта в админке
    $shop_admin_import->upload($fl);
    }

    ?>
    • 15 августа 2018 г. , редакция: 15 августа 2018 г.
    • У Вас при обращении получается ответ:
      Цитата
      Class 'Shop_admin_import' not found
      /home/users/m/mik-zapchast/domains/mik-zap.ru/modules/shop/shop.imp.php:11


      Вместо вот этого:
      Код
      include dirname(dirname(dirname(__FILE__))).'/modules/shop/admin/shop.admin.import.php';

      Вот так
      Код
      Custom::inc('modules/shop/admin/shop.admin.import.php');



      Вот это:
      Код
      define('DIAFAN', 1);
      не нужно
      • 15 августа 2018 г.
      • Вот так?
        Код

        <?php
        include 'https://mik-zap.ru/modules/shop/admin/shop.admin.import.php';

        imp('https://mik-zap.ru/test.csv', $this->diafan);

        function imp($fl, $df){
        $shop_admin_import = new Shop_admin_import($df);
        $df->_route->cat = 5; // категория импорта в админке
        $shop_admin_import->upload($fl);
        }
        ?>
        • 15 августа 2018 г.
        • Цитата
          include 'https://mik-zap.ru/modules/shop/admin/shop.admin.import.php';

          Цитата
          Вот так: Custom::inc('modules/shop/admin/shop.admin.import.php');

          • 15 августа 2018 г. , редакция: 15 августа 2018 г.
          • Код
            <?php

            Custom::inc('modules/shop/admin/shop.admin.import.php');

            imp('https://mik-zap.ru/test.csv', $this->diafan);

            function imp($fl, $df){
            $shop_admin_import = new Shop_admin_import($df);
            $df->_route->cat = 5; // категория импорта в админке
            $shop_admin_import->upload($fl);
            }

            ?>


            В результате снова 404
            • 15 августа 2018 г.
            • Да, верно. Теперь разберитесь с редиректом.
              • 15 августа 2018 г. , редакция: 15 августа 2018 г.
              • редирект не настраивал, что имеется ввиду
                нужно сделать редирект "http" на "https" и с "www" на "без www" или речь о псевдоссылках?

                Для домена редирект настроил, с импортом таже хрень что и была (((
  • 15 августа 2018 г.
  • Ситуация такая

    Вариант 1
    Код

    <?php
    Custom::inc('modules/shop/admin/shop.admin.import.php');

    imp('https://mik-zap.ru/test.csv', $this->diafan);

    function imp($fl, $df){
    $shop_admin_import = new Shop_admin_import($df);
    $df->_route->cat = 5; // категория импорта в админке
    $shop_admin_import->upload($fl);
    }
    ?>


    После запуска жалуется на класс 'Custom'
    Fatal error: Class 'Custom' not found in /home/users/m/mik-zapchast/domains/mik-zap.ru/modules/shop/shop.imp.php on line 2

    Вариант 2
    Код

    <?php
    define('DIAFAN', 1);
    include dirname(dirname(dirname(__FILE__))).'/modules/shop/admin/shop.admin.import.php';

    imp('https://mik-zap.ru/test.csv', $this->diafan);

    function imp($fl, $df){
    $shop_admin_import = new Shop_admin_import($df);
    $df->_route->cat = 5; // категория импорта в админке
    $shop_admin_import->upload($fl);
    }
    ?>


    После запуска жалуется на класс 'Diafan'
    Fatal error: Class 'Diafan' not found in /home/users/m/mik-zapchast/domains/mik-zap.ru/modules/shop/admin/shop.admin.import.php on line 27

    Квест продолжается )))
    • 17 августа 2018 г.
    • Нет ни какого квеста.

      И так, нет времени вникать в Вашу цель, поэтому дам набросок.
      Создаем файл modules/shop/shop.imp.php и пишем в нем следующее:
      Код
      <?php

      if (! defined('DIAFAN'))
      {
      $path = __FILE__;
      while(! file_exists($path.'/includes/404.php'))
      {
      $parent = dirname($path);
      if($parent == $path) exit;
      $path = $parent;
      }
      include $path.'/includes/404.php';
      }
      Custom::inc('modules/shop/admin/shop.admin.import.php');
      $class = new Shop_admin_import($this->diafan);
      echo 'Создан класс Shop_admin_import';
      exit;

      Для того, чтобы запустить созданный файл, в адресной строке браузера пишите: https://mik-zap.ru/shop/imp/
      Да, я не знаю что у Вас там в .htaccess. Оставьте его дефолтным. Если что-то меняли в нем, то после возврата его в дефолтное состояние сбросьте кэш браузера, иначе браузер не воспримет новое содержание.
  • 10 октября 2018 г. , редакция: 16 октября 2018 г.
  • Приветствую,
    цель сделать импорт товаров из внешнего файла который лежит тут https://mik-zap.ru/test.csv
    Ваш код работает выводит 'Создан класс Shop_admin_import'
    но если добавляю к нему кусок для импорта, то снова не работает

    Код

    <?php
    if (! defined('DIAFAN'))
    {
    $path = __FILE__;
    while(! file_exists($path.'/includes/404.php'))
    {
    $parent = dirname($path);
    if($parent == $path) exit;
    $path = $parent;
    }
    include $path.'/includes/404.php';
    }
    Custom::inc('modules/shop/admin/shop.admin.import.php');

    imp('https://mik-zap.ru/test.csv', $this->diafan);

    function imp($fl, $df){
    $shop_admin_import = new Shop_admin_import($df);
    $df->_route->cat = 5; // категория импорта в админке
    $shop_admin_import->upload($fl);
    }

    • 17 октября 2018 г.
    • Если назвали файлик "modules/shop/shop.imp.php"

      Добавьте перед imp('https://mik-zap.ru/test.csv', $this->diafan); объявление переменной URL:

      define('URL', 'imp');
      • 17 октября 2018 г.
      • Правильно я понимаю, что должно получиться так?

        Код
        <?php

        if (! defined('DIAFAN'))
        {
        $path = __FILE__;
        while(! file_exists($path.'/includes/404.php'))
        {
        $parent = dirname($path);
        if($parent == $path) exit;
        $path = $parent;
        }
        include $path.'/includes/404.php';
        }
        Custom::inc('modules/shop/admin/shop.admin.import.php');
        $class = new Shop_admin_import($this->diafan);
        echo 'Создан класс Shop_admin_import';

        Custom::inc('modules/shop/admin/shop.admin.import.php');

        define('URL', 'imp');

        imp('https://mik-zap.ru/test.csv', $this->diafan);

        function imp($fl, $df){
        $shop_admin_import = new Shop_admin_import($df);
        $df->_route->cat = 5; // категория импорта в админке $shop_admin_import->upload($fl);
        }
        • 18 октября 2018 г.
        • $class = new Shop_admin_import($this->diafan);
          echo 'Создан класс Shop_admin_import';
          можно убрать, в функции это делается уже, ну и аплоад файла раскоменнтировать необходимо.

Новости

  • Вчера, 09:05
  • В новой сборке совершили революцию в структурировании кастомизированной информации в шаблонах, добавили авторегистрацию пользователей, усовершенствовали защиту от спама, актуализировали накопительную скидку, а также улучшили производительность и стабильность работы системы.
  • 12 января
  • После выхода сборки 7.1 мы выпустили уже три патча, в каждом из которых улучшаем административную часть сайта. Сборка DIAFAN.CMS 7.1.3 уже доступна к установке. 
  • 15 декабря 2023 г.
  • Подводим итоги 2023 года. Выпустили новую сборку DIAFAN.CMS 7.1.1, вводим новые тарифы на аренду сайта и коммерческую поддержку и автообновления с января 2024 г., строим планы на будущий год.