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

20 Октябрь 2015, 14:56:25
Ответ #90
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 33325
  • Репутация: +26771/-0
    • Просмотр профиля
Цитировать
Вы сначала определитесь, что будете создавать модуль, страницу, контроллер или работать с бд через вебсервис.

Опять с начала.
Если в модуле, то не так.
Если в контолллере, то не так.
Если для вебсервиса, тоже не так.
Если что-то свое, то можно и так.
20 Октябрь 2015, 15:02:50
Ответ #91
  • Пользователь
  • **
  • Сообщений: 92
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Опять с начала.
Если в модуле, то не так.
Если в контолллере, то не так.
Если для вебсервиса, тоже не так.
Если что-то свое, то можно и так.
Я пишу что-то своё. Пишу экспортёр из товароучётной системы в престу, хочу чтобы склад вёлся не в престе а в товароучётной системе. Осталось доделать только комбинации. При добавлении товара никак не могу добавить эти комбинации. Сам набор комбинаций уже существует - это цвета, больше ничего другого нет.
Выяснил, что необходимо заполнить таблицы:

_product_attribute
_product_attribute_combination
_attribute_image
_attribute_lang

но как их заполнить правильно - пока не знаю. Что лучше - запросами mysql или средствами prestashop? Если prestashop-ом то как?
20 Октябрь 2015, 15:22:46
Ответ #92
  • Ветеран
  • *****
  • Сообщений: 86694
  • Репутация: +25428/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Лучше это когда по правилам prestashop.
Для связи сайта и сторонней программы - https://github.com/PrestaShop/PrestaShop-webservice-lib
Выгружаете товары в файл. Работаете с уже определенными api функциями View, Mоdufy, Add, Delete, Fast view.
Если у вас система может выгружать данные в cvs файл, тогда совсем просто, импортировать товары функциями админки.
20 Октябрь 2015, 15:38:15
Ответ #93
  • Пользователь
  • **
  • Сообщений: 92
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Лучше это когда по правилам prestashop.
Для связи сайта и сторонней программы - https://github.com/PrestaShop/PrestaShop-webservice-lib
Выгружаете товары в файл. Работаете с уже определенными api функциями View, Mоdufy, Add, Delete, Fast view.
Если у вас система может выгружать данные в cvs файл, тогда совсем просто, импортировать товары функциями админки.

Мне с этими включёнными автоэкскрементами ID в таблицах престы совершенно не понятно, как я буду синхронизировать ID престы и ID товароучётной программы, если в престе ID присваиваются автоматически да ещё и скачут через один в случае, если товар был удалён. Вот не хочу я каждый раз при добавлении нового товара заниматься удалением всей базы, очисткой и сбросом ID и потом загрузкой такого же количества товара, только + какой-то новый. Хочу всё чётко, чтобы ID престы, был бы жёстко привязан к ID в товароучётной системе, чтобы я смог найти этот товар по ID в престе и изменить его количество, цену, картинку, артикул, штрихкод, а не перезагружать всю базу товаров из-за одного-двух товаров.
20 Октябрь 2015, 15:53:15
Ответ #94
  • Партнер
  • Ветеран
  • ****
  • Сообщений: 22816
  • Репутация: +17143/-1
  • Разработка веб-сайтов и веб-программирование
    • Просмотр профиля
В престе синхронизирут по реф. номеру (артикул). Каждый раз удалять базу перед загрузкой, это бред. ID в товароучётной системы можно использовать как артикул или добавить новое поле к товару.
Создание товара с API PrestaShopWebService - http://prestashop-forum.ru/index.php/topic,25.msg32455.html#msg32455
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.
20 Октябрь 2015, 19:11:31
Ответ #95
  • Пользователь
  • **
  • Сообщений: 92
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В престе синхронизирут по реф. номеру (артикул). Каждый раз удалять базу перед загрузкой, это бред. ID в товароучётной системы можно использовать как артикул или добавить новое поле к товару.
Создание товара с API PrestaShopWebService - http://prestashop-forum.ru/index.php/topic,25.msg32455.html#msg32455

Как изменить id продукта при создании? $product->id_product = 2; не катит, при создании в id_product значение 0, автоэкскремент я отключил.
20 Октябрь 2015, 20:02:37
Ответ #96
  • Ветеран
  • *****
  • Сообщений: 1614
  • Репутация: +32/-1
  • Сообщество PrestaShop
    • Просмотр профиля
Вам нельзя использовать классы prestashop, если id у вас не AUTO_INCREMEN. Созранять товары нужно напрямую, с помощью sql запросов.
В prestashop классе товара ид автоматически приваивается. В описании модели нет поля id, смотрите Product.php.
20 Октябрь 2015, 20:49:15
Ответ #97
  • Пользователь
  • **
  • Сообщений: 92
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Вам нельзя использовать классы prestashop, если id у вас не AUTO_INCREMEN. Созранять товары нужно напрямую, с помощью sql запросов.
В prestashop классе товара ид автоматически приваивается. В описании модели нет поля id, смотрите Product.php.

Вот этого я и боялся  :-\
21 Октябрь 2015, 00:20:11
Ответ #98
  • Пользователь
  • **
  • Сообщений: 92
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В админке есть импорт CSV.
Как программно выбрать файл категорий.csv, указать нужные опции и импортировать этот файл?
21 Октябрь 2015, 11:37:37
Ответ #99
  • Ветеран
  • *****
  • Сообщений: 86694
  • Репутация: +25428/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Создаете свой контроллер от родителя AdminImportControllerCore и используте все методы импорта товаров и категорий.
class MyAdminImportController extends AdminImportController
{

Цитировать
программно выбрать файл категорий.csv
Указать путь к файлу
$myfile = '/path/myfile.csv';
21 Октябрь 2015, 12:37:08
Ответ #100
  • Пользователь
  • **
  • Сообщений: 92
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
А можно какой нибудь пример обработки импорта csv?
21 Октябрь 2015, 12:43:25
Ответ #101
  • Ветеран
  • *****
  • Сообщений: 86694
  • Репутация: +25428/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Если работаете с базовыми методами и классами, то примеры можете смотреть в базовых контроллерах. Для импорта товаров в /controllers/admin/AdminImportController.php
public function productImport()
{
21 Октябрь 2015, 12:50:33
Ответ #102
  • Пользователь
  • **
  • Сообщений: 92
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Я первым делом туда и полез, но у меня голова взорвалась!
$product = new Product((int)$info['id']);
Что это такое??? Ну здесь в же в этой теме мне сказали, что id товара автоинкриментировано и изменить его нельзя, но в
public function productImport() вдруг я нашёл эту строку. Через условие
if (Tools::getValue('forceIDs') && isset($info['id']) && (int)$info['id'])  эта функция определяет: установлена ли опция переписывать ID товара, установлено ли значение поля ID в строке csv и является ли это поле целым числом, если всё верно, то создать продукт с id ИЗ ФАЙЛА!!!
$product = new Product((int)$info['id']); КАК ЭТО ПОНИМАТЬ???
21 Октябрь 2015, 13:23:58
Ответ #103
  • Ветеран
  • *****
  • Сообщений: 86694
  • Репутация: +25428/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Это выбор товара, который есть у вас в магазине. Для его дальнейшего изменения, все кроме ид.
При импорте могут возникать разные ситуации.
Перед импортом удаляются все товары и потом импортируется список. Создается новый товар.
Перед импортром не удаляются товары, указывается ид каждого товара, товары перезаписываются, т.е. фактически редактируются.
21 Октябрь 2015, 13:50:22
Ответ #104
  • Пользователь
  • **
  • Сообщений: 92
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Благодарю coder-а за правильное форматирование моего сообщения, я немного поспешил.

В файле csv в поле ID я могу указать любую цифру вне зависимости от всяких там автоинкрементов
строка
$product = new Product((int)$info['id']);
создаёт товар независимо от всяких автоинкрементов и берёт значение ID из файла csv
вопрос: как она это делает?
что такое (int)$info['id'] ?
чтение поля id ? Значит там цифра-целое число?
Так а если я просто напишу $product = new Product(5); - это не создаст товар с id_product = 5 ?