Автор Тема: Создание товара в базе Prestashop запросами mysql  (Прочитано 14376 раз)

16 Октябрь 2015, 13:28:16
Ответ #45
  • Ветеран
  • *****
  • Сообщений: 86694
  • Репутация: +25428/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Нет, не сохранял, я думал автоматически туда всё сохраняется при выполнении $product->id_category_default = тра-ля-ля;
А как сохранить в категории???
При программном добавлении все самому делать нужно, атоматически не создается.
16 Октябрь 2015, 13:37:40
Ответ #46
  • Пользователь
  • **
  • Сообщений: 92
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Ужас!!!


В категории всё добавилось!!! Спасибо огромное! Только вот почему-то в разделе "Количества" опция When out of stock ну никак не желает переключаться, $product->out_of_stock = 2; напрочь игнорируется, хотя в таблице значение верное.
16 Октябрь 2015, 14:01:21
Ответ #47
  • Ветеран
  • *****
  • Сообщений: 86694
  • Репутация: +25428/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Наверное, потому что у вас расширенное управление запасами, в этом случае нужно учитывать связи с таблицей колиства на складе
StockAvailable::setProductOutOfStock($product->id, $out_of_stock );
16 Октябрь 2015, 14:24:29
Ответ #48
  • Пользователь
  • **
  • Сообщений: 92
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Наверное, потому что у вас расширенное управление запасами, в этом случае нужно учитывать связи с таблицей колиства на складе
StockAvailable::setProductOutOfStock($product->id, $out_of_stock );

Всё заработалооооо!!! Урааа! Огромное спасибо!!! Супер-форум и супер-умные люди на этом форуме!!!

Осталась одна маааленькая проблемка - никак не могу добавить картинку и привязать её к товару.
$product->image_url = 'http://мой_сайт.ru/img_import/test.jpeg';чувствую, что этого мало, надо ещё как-то её размножить с разными размерами и именами и привязать к ID создаваемого товара, но как и чем это сделать?
16 Октябрь 2015, 15:42:47
Ответ #49
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 33325
  • Репутация: +26771/-0
    • Просмотр профиля
Цитировать
И каким образом мне правильно указать картинку-логотип для товара?
$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();
    }
}
или
$image = new Image(null,Context::getContext()->language->id);
$image->id_product = $product->id;
$image->cover = true;   
$image->pathurl = '...' ;
$image->add();
16 Октябрь 2015, 16:06:02
Ответ #50
  • Пользователь
  • **
  • Сообщений: 92
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
$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();
    }
}

Почему-то не работает, а вот этот
$image = new Image(null,Context::getContext()->language->id);
$image->id_product = $product->id;
$image->cover = true;   
$image->pathurl = '...' ;
$image->add();

работает, но как-то странно, в таблицы добавляет, но картинка не отображается нигде, вместо картинки пустая иконка файла изображения, если на неё нажать, то вылазит сообщение "The requested content cannot be loaded.
Please try again later."
16 Октябрь 2015, 16:33:25
Ответ #51
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 33325
  • Репутация: +26771/-0
    • Просмотр профиля
Не не отображается потому что или не добавили функцию ресайза, или не правильно указали язык, или нет разрешения на доступ к файлам изображений.
...
$image->add();
// ресайз
$newpathurl = $image->getPathForCreation();
$images_types = ImageType::getImagesTypes('products');
foreach ($images_types as $image_type)
{
       ImageManager::resize($pathurl, $newpathurl.'-'.Tools::stripslashes($image_type['name']).'.'.$image->image_format, $image_type['width'], $image_type['height'], $image->image_format);
}
$image->update();

Проверьте файлы картинок в папке /img/p/...
16 Октябрь 2015, 16:48:27
Ответ #52
  • Пользователь
  • **
  • Сообщений: 92
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Беда товарищи! Не работает код, доступ до файла картинки есть и ничем не ограничен, но вот ресайзинг не исполняется, файлы в папке /img/p/... не появляются. ч.д.?
17 Октябрь 2015, 10:05:51
Ответ #53
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 33325
  • Репутация: +26771/-0
    • Просмотр профиля
Добавьте показ ошибок, лог ошибок посмотрите.
if (!$image->add())
    exit(Tools::jsonEncode(array('error' => Tools::displayError('Ошибка записи файла.'))));
else
{
    $newpathurl = $image->getPathForCreation();

    ImageManager::resize($pathurl, $newpathurl.'.'.$image->image_format);
    $images_types = ImageType::getImagesTypes('products');
    foreach ($images_types as $image_type)
    {
        if (!ImageManager::resize($image_path, $newpathurl.'-'.Tools::stripslashes($image_type['name']).'.'.
            $image->image_format, $image_type['width'], $image_type['height'], $image->image_format))
            exit(Tools::jsonEncode(array('error' => Tools::displayError('Ошибка создания копии файла').
                ' '.Tools::stripslashes($image_type['name']))));
    }
    $image->update();
}
17 Октябрь 2015, 10:59:57
Ответ #54
  • Пользователь
  • **
  • Сообщений: 92
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
При запуске скрипта выходит ошибка:
17 Октябрь 2015, 11:34:39
Ответ #55
  • Ветеран
  • *****
  • Сообщений: 3419
  • Репутация: +79/-6
  • Сообщество PrestaShop
    • Просмотр профиля
Тескт ошибок поменяй на английский или сделай поддержку русского в консоле.
17 Октябрь 2015, 11:58:32
Ответ #56
  • Пользователь
  • **
  • Сообщений: 92
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Тескт ошибок поменяй на английский или сделай поддержку русского в консоле.

Говорит, что не может создать копию файла cart_default
17 Октябрь 2015, 12:43:45
Ответ #57
  • Ветеран
  • *****
  • Сообщений: 1614
  • Репутация: +32/-1
  • Сообщество PrestaShop
    • Просмотр профиля
Такая ошибка говорит о том, что путь к директориям хранения изображений указан не правильно или скрипту запрешена запись в эти директории.
17 Октябрь 2015, 13:27:45
Ответ #58
  • Пользователь
  • **
  • Сообщений: 92
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Такая ошибка говорит о том, что путь к директориям хранения изображений указан не правильно или скрипту запрешена запись в эти директории.

Путь исправил, таблицы заполнились без ошибок, НО! Ссылка на ГЛАВНОЕ изображение с именем файла ID ссылается на не существующий файл с одной цифрой ID которого нет. например создались файлы 32-cart_default.jpg, 32-home_default.jpg... ну и все остальные, КРОМЕ главного файла 32.jpg!!! как его создать?
17 Октябрь 2015, 13:31:32
Ответ #59
  • Ветеран
  • *****
  • Сообщений: 1614
  • Репутация: +32/-1
  • Сообщество PrestaShop
    • Просмотр профиля
Включить логирование, в скрипте поставить запись в лог при каждом прохождении цикла, так определить причину ошибку. После нахождения причины, можно искать решение как исправть эту ошибку.