Автор Тема: Как создать механизм закачки изображений с внешних ссылок?  (Прочитано 240 раз)

02 Ноябрь 2021, 14:20:13
  • Пользователь
  • **
  • Сообщений: 69
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Доброго времени.
Меня не покидает мысль о том, - как сделать механизм, который будет закачивать изображения с внешних  ссылок в определенную папку на хостинге со страницы Продукта, например из поля Описание Товара.
Можно ли такое решение написать в шаблонах tpl на smarty?
У кого какие идеи? Возможно есть решение?
02 Ноябрь 2021, 15:52:02
Ответ #1
  • Старожил
  • ****
  • Сообщений: 259
  • Репутация: +2/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Я качаю картинки с других сайтов так
if ($picture_url) {
// image
$sql = 'INSERT INTO `'._DB_PREFIX_.'image` (`id_product`,`position`,`cover`) VALUES ('.$id_product.',"1","1")';
Db::getInstance()->Execute($sql);
$id_image = (int)Db::getInstance()->Insert_ID();
// image_lang
$img_name = str_replace("'", '"', $product_name);
$sql = "INSERT INTO `"._DB_PREFIX_."image_lang` (`id_image`,`id_lang`,`legend`) VALUES ('".$id_image."','1','".$img_name."')";
Db::getInstance()->Execute($sql);
foreach ($shop_arr as $one_shop) {
// image_shop
$sql_image .= "(".$new_id.",".$id_image.",".$one_shop['id_shop'].",'1'),";
}
$sql_image = trim($sql_image, ',');
$sql = 'INSERT INTO `'._DB_PREFIX_.'image_shop` (`id_product`,`id_image`,`id_shop`,`cover`) VALUES '.$sql_image.'';
Db::getInstance()->Execute($sql);
$images_path = '../img/p/'.Image::getImgFolderStatic($id_image);
mkdir($images_path, 0777, true);
AdminImportController::copyImgFromPars($id_product, $id_image, $picture_url);
}
Если, конечно, об этом речь
02 Ноябрь 2021, 15:58:10
Ответ #2
  • Пользователь
  • **
  • Сообщений: 69
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Я качаю картинки с других сайтов так
if ($picture_url) {
// image
$sql = 'INSERT INTO `'._DB_PREFIX_.'image` (`id_product`,`position`,`cover`) VALUES ('.$id_product.',"1","1")';
Db::getInstance()->Execute($sql);
$id_image = (int)Db::getInstance()->Insert_ID();
// image_lang
$img_name = str_replace("'", '"', $product_name);
$sql = "INSERT INTO `"._DB_PREFIX_."image_lang` (`id_image`,`id_lang`,`legend`) VALUES ('".$id_image."','1','".$img_name."')";
Db::getInstance()->Execute($sql);
foreach ($shop_arr as $one_shop) {
// image_shop
$sql_image .= "(".$new_id.",".$id_image.",".$one_shop['id_shop'].",'1'),";
}
$sql_image = trim($sql_image, ',');
$sql = 'INSERT INTO `'._DB_PREFIX_.'image_shop` (`id_product`,`id_image`,`id_shop`,`cover`) VALUES '.$sql_image.'';
Db::getInstance()->Execute($sql);
$images_path = '../img/p/'.Image::getImgFolderStatic($id_image);
mkdir($images_path, 0777, true);
AdminImportController::copyImgFromPars($id_product, $id_image, $picture_url);
}
Если, конечно, об этом речь

Спасибо за ответ вам и внимание. В вашем случае - можете чуть подробнее рассказать что этот код делает, принцип паботы?
02 Ноябрь 2021, 19:15:06
Ответ #3
  • Старожил
  • ****
  • Сообщений: 259
  • Репутация: +2/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Спасибо за ответ вам и внимание. В вашем случае - можете чуть подробнее рассказать что этот код делает, принцип паботы?
Эта функция (точнее эта часть функции) при наличии web-адреса с картинкой товара в переменной $picture_url и, имея ID товара в переменной $id_product, соблюдая всю внутреннюю структуру Престашоп, скачивает картинку, сохраняет её на сервере и привязывает к указанному товару.

02 Ноябрь 2021, 19:26:41
Ответ #4
  • Пользователь
  • **
  • Сообщений: 69
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Спасибо за ответ вам и внимание. В вашем случае - можете чуть подробнее рассказать что этот код делает, принцип паботы?
Эта функция (точнее эта часть функции) при наличии web-адреса с картинкой товара в переменной $picture_url и, имея ID товара в переменной $id_product, соблюдая всю внутреннюю структуру Престашоп, скачивает картинку, сохраняет её на сервере и привязывает к указанному товару.

Это то, почти что нужно. Но, я бы хотел, чтобы подобное было в описании. Потому что в своем престашоп я сделал возможность создавать разные страницы через Товары. Этот код из версии 1.7?
Не могли бы вы поделиться полным кодом?
кому интересно, вот ссылка, где время от времени я что-то делаю:
www.gameraider.ru
https://gameraider.ru/ru/test/33-life-is-strange.html