Создание товара в базе Prestashop запросами mysql

Автор Cyrix, 14 октября 2015, 09:53:47

« назад - далее »

Cyrix

Цитата: DarinSr от 14 октября 2015, 15:48:44
Цитата: DarinSr от 14 октября 2015, 11:04:17
Using the PrestaShop Web Service

Для работы с prestashop из сторонней программы существует WebService.
Других вариантов нет.

то есть выполнение скрипта
$image = new Image();
$image->id_product = $id_product;
$image->cover = 'true / false';
$url = '....jpg';

if (($image->validateFields(false, true)) === true && ($image->validateFieldsLang(false, true)) === true && $image->add())
{
    $image->associateTo($shops);
    if (!AdminImportController::copyImg($id_product, $image->id, $url, 'products', false))
    {
        $image->delete();
    }
}


возможно только через WebService ? и если я запущу этот скрипт через командную строку php add_image.php то работать не будет???

DarinSr

Не будет. Или создате модуль/контроллер (это работает только внутри движка), или используете Web Service.

Cyrix

Цитата: DarinSr от 14 октября 2015, 15:59:19
Не будет. Или создате модуль/контроллер (это работает только внутри движка), или используете Web Service.

странно... я только что создал запись в таблице именно таким способом, через командную строку php add_image.php

Cyrix

хорошо, задам вопрос по другому: как преста импортирует товары через csv ? Какой там алгоритм? Можно ли как нибудь увидеть этот скрипт?

DarinSr

Цитата: Cyrix от 14 октября 2015, 16:12:43
странно... я только что создал запись в таблице именно таким способом, через командную строку php add_image.php
Это не правда. Так как не возможно создать что-то не имея подключения к бд.
Все дело в деталях. Сначала вы создали соединение с бд, потом выбрали таблицу, потом только сохранили данные.

Цитироватьхорошо, задам вопрос по другому: как преста импортирует товары через csv ? Какой там алгоритм? Можно ли как нибудь увидеть этот скрипт?
/controllers/admin/AdminImportController.php

PrestaMan

Цитата: Cyrix от 14 октября 2015, 16:12:43
Цитата: DarinSr от 14 октября 2015, 15:59:19
Не будет. Или создате модуль/контроллер (это работает только внутри движка), или используете Web Service.
странно... я только что создал запись в таблице именно таким способом, через командную строку php add_image.php

Вам объянили как работать с prestashop с удаленного сервера и на самом сервер.
Как вы будите запускать php-скрипт из командной строки или еще как-то значение не имеет.
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!

Cyrix

$product->name = array((int)Configuration::get('PS_LANG_DEFAULT') =>  'test');
не заполняется, вместо названия товара пустота - что не так?

mistral


Cyrix

Цитата: mistral от 15 октября 2015, 13:41:54
Язык не определяется.

А как ЕГО ещё определить? Я же прописываю инструкцию array((int)Configuration::get('PS_LANG_DEFAULT')

coder

Где вы это используете?
Если говорить только об этой строке, то в ней ошибок нет.

Cyrix

сам разобрался... теперь новая проблема! Теперь не могу добавить количество - оно не появляется!
$product->minimal_quantity = 1;
$product->out_of_stock = 1;

Это наверное как-то связано с условием When out of stock но я никак не могу найти инструкцию, чтобы изменить значение на Deny  а то там по умолчанию все покупки разрешены, даже если 0 товара, но возможно я ещё что-то делаю не так. Помогите!

$product = new Product();
$product->active = 1;
$product->name = array((int)Configuration::get('PS_LANG_DEFAULT') =>  'Тест');
$product->condition = 'new';
$product->link_rewrite = array((int)Configuration::get('PS_LANG_DEFAULT') =>  'test');
$product->id_category = 12;
$product->id_category_default = 12;
$product->price = 1.11;
$product->quantity = 100;
$product->minimal_quantity = 1;
$product->out_of_stock = 1;
$product->depends_on_stock = 1;
$product->warehouse = 1;
$product->on_sale = 1;
$product->advanced_stock_management = 1;
$product->save();

Миколас

...
$product->quantity = 100;
$product->minimal_quantity = 1;
$product->out_of_stock = 0;
...
$product->add();

PrestaMan

Если включено расширенное управление запасами
$product->advanced_stock_management = 1
то нужно добалять записи для таблицы запасов
$stock_availables->id = $stock->id;
$stock_availables->id_product  = $product_id;
$stock_availables->quantity = 100;
$stock_availables->id_shop = 1;
$stock_availables->out_of_stock = 1;
$stock_availables->depends_on_stock = 0;
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!

Миколас


Cyrix

У меня почему-то не переключается опция out_of_stock - пробовал значения 0...2 но всё равно опция When out of stock стоИт в положении "По умолчанию: Allow orders as set in the Products Preferences page"

$product->advanced_stock_management = 0
тоже не помогло, количество товара $stock_availables->quantity = 100; не устанавливается  :-[
может я не той опцией пользуюсь? может не quantity надо, а что-то ещё?