@Gregpopov
Full stack web developer

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

Есть каталог товаров из ВК, нужно залить их пачкой в OpenCart, погуглил, готовых и бесплатных решений не нашел (или плохо искал), может повернете голову «в нужную сторону»

Буду признателен за помощь. Так же есть вопрос с тем же действием на Фейсбук.
  • Вопрос задан
  • 813 просмотров
Решения вопроса 1
@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);
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
ArteMoon
@ArteMoon
Развиваюсь
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽