• Как залить товары в OpenCart «пачками»?

    @remzalp
    Программер чего попало на чем попало
    1. получаем товары:
    https://vk.com/dev/market.get
    Если есть проблемы с доступом к апи (не хватает прав) - создаёте приложение в ВК, получаете его ид и следуете по https://vk.com/dev/implicit_flow_user
    2. смотрим по импорту товаров в опенкарт
    начиная с https://www.opencart.com/index.php?route=marketpla...
    или любой на выбор
    3. пережевываем товары из вк в формат товаров опенкарта
    4. выгружаем.

    В особо сложном случае (как делал сам) пишется скрипт для импорта. Пример говнокода для версии 1.5, этого хватает, если остальные действия с товаром делать уже в админке - свойства, категории, проч.:
    ВНИМАНИЕ: БД в проекте, который показан в этом примере была сильно перекроена, в итоге поля description, image были вынесены из связанных таблиц и вставлены в эту (в связанных моделях пришлось аналогично поступать). Потеряна возможность хранить много фоток, многоязычность. Получен импорт 100к товаров секунд за 10.
    Спасибо alex-1917 за внимательность.

    <?php
    set_time_limit(0);
    error_reporting(E_ALL);
    
    include_once('config.php'); //конфиг админки
    $my = new mysqli(DB_HOSTNAME, DB_USERNAME, DB_PASSWORD, DB_DATABASE);
    $my->set_charset("utf8");
    
    function addProduct($data,$my){
        foreach($data as $key=>$val)
        {
            $keys[] = '`'.$key.'`';
            $values[] = '"'.$my->real_escape_string($val).'"';
        }
        $keys[] = '`date_added`';   $values[] = 'NOW()';
        $keys[] = '`date_modified`';$values[] = 'NOW()';
    
        $keys2 = join(',',$keys);
        $vals2 = join(',',$values);
    
        $q = "INSERT INTO product ($keys2) VALUES ($vals2);";
        $my->query($q);
    }
    
    
    /*
    $items - массив с товарами из вк, в каталоге data лежат файлы с картинками
    */
    
    foreach($items as $item)
    {
        $data = array();
        $data['category_id'] = 1; //всё в один раздел
        $data['name'] = $item['name'];
        $data['description'] = $item['description'];
        $data['articul'] = $item['articul'];
        $data['quantity'] = 1;
        $data['stock_status_id'] = 1;
        $data['manufacturer_id'] = 0;
        $data['shipping'] = 1;
        $data['price'] = 0;
        $data['tax_class_id'] = 0;
        $data['subtract'] = 1;
        $data['minimum'] = 1;
        $data['image'] = 'data/'.$item['image'];
        $cnt++;
        addProduct($data,$my);
    }
    Ответ написан
    5 комментариев