Автор Тема: Экспорт/импорт изображений  (Прочитано 54 раз)

21 Июль 2018, 16:38:35
  • Пользователь
  • **
  • Сообщений: 83
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Уже надоел с одним и тем же, но все равно не смог решить проблему, поэтому прошу коллективной помощи. Тем более вопрос немного трансформировался.

Сделал запрос, достаю из Престы определенный товар со всеми данными.Запрос работает, csv создается, все данные экспортируются в файл.На всякий случай, вот он:SELECT
p.id_product AS `ID`,
p.active AS `Active (0/1)`,
pl.`name` AS `Name`,
GROUP_CONCAT(DISTINCT(cl.name) SEPARATOR ',') AS `Categories (x,y,z...)`,
p.price AS `Price tax excluded or Price tax included`,
p.id_tax_rules_group AS `Tax rules ID`,
p.wholesale_price AS `Wholesale price`,
p.on_sale AS `On sale (0/1)`,
IF(pr.reduction_type='amount',pr.reduction,'') AS `Discount amount`,
IF(pr.reduction_type='percentage',pr.reduction,'') AS `Discount percent`,
pr.`from` AS `Discount from (yyyy-mm-dd)`,
pr.`to` AS `Discount to (yyyy-mm-dd)`,
p.reference AS `Reference #`,
pps.product_supplier_reference AS `Supplier reference #`,
ps.`name` AS `Supplier`,
pm.`name` AS `Manufacturer`,
p.ean13 AS `EAN13`,
p.upc AS `UPC`,
p.ecotax AS `Ecotax`,
p.width AS `Width`,
p.height AS `Height`,
p.depth AS `Depth`,
p.weight AS `Weight`,
pq.quantity AS `Quantity`,
p.minimal_quantity AS `Minimal quantity`,
p.visibility AS `Visibility`,
p.additional_shipping_cost AS `Additional shipping cost`,
p.unity AS `Unit for the unit price`,
p.unit_price_ratio AS `Unit price`,
pl.description_short AS `Short description`,
pl.description AS `Description`,
IF(t.`name` IS NOT NULL, GROUP_CONCAT(DISTINCT(t.`name`) SEPARATOR ','), '') AS `Tags (x,y,z...)`,
pl.meta_title AS `Meta title`,
pl.meta_keywords AS `Meta keywords`,
pl.meta_description AS `Meta description`,
pl.link_rewrite AS `URL rewritten`,
pl.available_now AS `Text when in stock`,
pl.available_later AS `Text when backorder allowed`,
p.available_for_order AS `Available for order (0 = No, 1 = Yes)`,
'' AS `Product available date`,
p.date_add `Product creation date`,
p.show_price AS `Show price (0 = No, 1 = Yes)`,
IF(pi.`id_product` IS NOT NULL, GROUP_CONCAT(DISTINCT(concat( 'http://umkarapuz.ru/img/p/',mid(pi.id_image,1,1),'/', IF (LENGTH(pi.id_image)>1, concat(mid(pi.id_image,2,1),'/'),''),IF (LENGTH(pi.id_image)>2,concat(mid(pi.id_image,3,1),'/'),''),IF (LENGTH(pi.id_image)>3,concat(mid(pi.id_image,4,1),'/'),''),IF (LENGTH(pi.id_image)>4,concat(mid(pi.id_image,5,1),'/'),''), pi.id_image, '.jpg' )) SEPARATOR ','), '') AS url_image,
0 AS `Delete existing images (0 = No, 1 = Yes)`,
GROUP_CONCAT(DISTINCT(CONCAT((fl.`name`), ':', (fvl.`value`), ':' , (f.position), ':' , (fv.custom))) SEPARATOR ',') AS `Feature (Name:Value:Position:Customized)`,
p.online_only AS `Available online only (0 = No, 1 = Yes)`,
p.condition AS `Condition`,
0 AS `Customizable (0 = No, 1 = Yes)`,
0 AS `Uploadable files (0 = No, 1 = Yes)`,
0 AS `Text fields (0 = No, 1 = Yes)`,
'' AS `Action when out of stock`,
p.id_shop_default AS `ID / Name of shop`,
p.advanced_stock_management AS `Advanced Stock Management`,
'' AS `Depends on stock`,
'' AS `Warehouse`
FROM ps_product p
LEFT JOIN ps_product_lang pl ON (p.id_product = pl.id_product)
LEFT JOIN ps_category_product cp ON (p.id_product = cp.id_product)
LEFT JOIN ps_category_lang cl ON (cp.id_category = cl.id_category)
LEFT JOIN ps_category c ON (cp.id_category = c.id_category)
LEFT JOIN ps_specific_price pr ON (p.id_product = pr.id_product)
LEFT JOIN ps_product_tag pt ON (p.id_product = pt.id_product)
LEFT JOIN ps_tag t ON ( pt.id_tag = t.id_tag )
LEFT JOIN ps_image pi ON ( p.id_product = pi.id_product)
LEFT JOIN ps_manufacturer pm ON (p.id_manufacturer = pm.id_manufacturer)
LEFT JOIN ps_supplier ps ON (p.id_supplier = ps.id_supplier)
LEFT JOIN ps_product_supplier pps ON (p.id_supplier = pps.id_supplier)
LEFT JOIN ps_stock_available pq ON (p.id_product = pq.id_product)
LEFT JOIN ps_configuration conf ON conf.`name` = 'ps_SHOP_DOMAIN'
LEFT JOIN ps_feature_product fp ON p.id_product = fp.id_product
LEFT JOIN ps_feature_lang fl ON fp.id_feature = fl.id_feature
LEFT JOIN ps_feature_value_lang fvl ON fp.id_feature_value = fvl.id_feature_value
LEFT JOIN ps_feature f ON fp.id_feature = f.id_feature
LEFT JOIN ps_feature_value fv ON fp.id_feature_value = fv.id_feature_value
WHERE p.id_product = 4569 AND pl.id_lang = 6
AND cl.id_lang = 6
AND p.id_shop_default = 1
AND c.id_shop_default = 1
GROUP BY p.id_product

Но есть маленькая проблема, если у товара несколько изображений они записываются в файл, в одну ячейку через запятую, в итоге при импорте csv картинки не присоединяются к товару.
Проблема понятна: Каждая ссылка на изображение должна находиться в отдельном столбце, заголовок которого совпадает с другими столбцами изображений. Но как это с делать? Как прописать это в запросе? Самостоятельно не осилил, требуется коллективный разум.
Вот это место в коде:IF(pi.`id_product` IS NOT NULL, GROUP_CONCAT(DISTINCT(concat( 'http://umkarapuz.ru/img/p/',mid(pi.id_image,1,1),'/', IF (LENGTH(pi.id_image)>1, concat(mid(pi.id_image,2,1),'/'),''),IF (LENGTH(pi.id_image)>2,concat(mid(pi.id_image,3,1),'/'),''),IF (LENGTH(pi.id_image)>3,concat(mid(pi.id_image,4,1),'/'),''),IF (LENGTH(pi.id_image)>4,concat(mid(pi.id_image,5,1),'/'),''), pi.id_image, '.jpg' )) SEPARATOR ','), '') AS url_image,
И еще, как прописать в запросе (для группы товаров или для конкретного товара) отношение к определенной категории(подкатегории)?
22 Июль 2018, 11:33:18
Ответ #1
  • Ветеран
  • *****
  • Сообщений: 21397
  • Репутация: +25286/-1
  • Prestashop - просто и эффективно
    • Просмотр профиля
http://doc.prestashop.com/display/PS16/CSV+Import+Parameters
В файле импорта для изображений URL задают через запятую в одной ячейки (x,y,z...).
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!
22 Июль 2018, 13:27:07
Ответ #2
  • Пользователь
  • **
  • Сообщений: 83
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
http://doc.prestashop.com/display/PS16/CSV+Import+Parameters
В файле импорта для изображений URL задают через запятую в одной ячейки (x,y,z...).
да, я понимаю это и вижу, и это наверное правильно, но в итоге импорт не "съедает" csv с такими ссылками.может быть есть какой то программный выход из ситуации? ковырять таблицу руками как то не правильно.
22 Июль 2018, 14:31:16
Ответ #3
  • Ветеран
  • *****
  • Сообщений: 14962
  • Репутация: +14588/-5
  • Сообщество PrestaShop
    • Просмотр профиля
Разделитель проверьте, заключите в кавычки ссылки.
23 Июль 2018, 15:08:18
Ответ #4
  • Пользователь
  • **
  • Сообщений: 83
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Разделитель проверьте, заключите в кавычки ссылки.
заключил, проверил.в csv все ок, в импорт изображения не попадаютчто не так сделал?
IF(pi.`id_product` IS NOT NULL, GROUP_CONCAT(DISTINCT(concat( "http://umkarapuz.ru/img/p/",mid(pi.id_image,1,1),'/', IF (LENGTH(pi.id_image)>1, concat(mid(pi.id_image,2,1),'/'),''),IF (LENGTH(pi.id_image)>2,concat(mid(pi.id_image,3,1),'/'),''),IF (LENGTH(pi.id_image)>3,concat(mid(pi.id_image,4,1),'/'),''),IF (LENGTH(pi.id_image)>4,concat(mid(pi.id_image,5,1),'/'),''), pi.id_image, '.jpg' )) SEPARATOR ';'), '') AS url_image,
23 Июль 2018, 15:15:21
Ответ #5
  • Ветеран
  • *****
  • Сообщений: 14962
  • Репутация: +14588/-5
  • Сообщество PrestaShop
    • Просмотр профиля
Не в запросе проверять нужно и кавычки ставить, а в файле csv. В файле проблема.
23 Июль 2018, 18:53:36
Ответ #6
  • Пользователь
  • **
  • Сообщений: 83
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Ковырять csv - самое простое в данном случае. Никаких кавычек не нужно, просто добавить несколько ячеек с одинаковым наименованием и разнести ссылки по ним.Но вопрос именно в правильном запросе. Чтобы не ковыряться потом, а массивом получить верную информацию.Нужен работающий запрос
01 Август 2018, 18:17:00
Ответ #7
  • Пользователь
  • **
  • Сообщений: 83
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
С изображениями разобрался, но остался вопрос по основному запросу.Подскажите, как вытянуть все товары из конкретной категории?Как должен выглядеть запрос?