2013-11-22 3 views
3

У меня есть объект продукта, который я создаю в PHP-скрипте. Мне нужно добавить миниатюру и большое изображение, которое у меня есть в zip-файле. Имя файла содержит идентификатор продукта.prestashop Добавить изображение в товарах

Каков наилучший способ достичь этого в коде? Я предполагаю, что мне нужно извлечь изображения где-нибудь в файловой системе, но я не знаю, как prestashop обрабатывает изображения.

спасибо!

+0

попробуйте войти в интерфейс администратора, у него есть все. – skrilled

+0

Я не могу предоставить вам точный маршрут, однако, идите и посмотрите в классах и контроллерах, чтобы получить контроль, как это делается prestashop. Я бы рекомендовал посмотреть в 'controller/admin/AdminProductsController.php'. Я знаю, что эти 5000 строк кода слишком много, хотя и попробуйте :-D. Затем загляните в классы изображений, поскольку они - единственный способ, с помощью которого создается интерфейс обработки изображений. classes/Image.php и classes/ImageManager.php –

ответ

8

Если у вас есть идентификатор продукта ($ id_product) и URL изображения ($ URL), вы можете сделать следующее:

$image = new Image(); 
$image->id_product = $id_product; 
$image->position = Image::getHighestPosition($id_product) + 1; 
$image->cover = true; // or false; 
if (($image->validateFields(false, true)) === true && 
($image->validateFieldsLang(false, true)) === true && $image->add()) 
{ 
    $image->associateTo($shops); 
    if (!self::copyImg($id_product, $image->id, $url, 'products', false)) 
    { 
     $image->delete(); 
    } 
} 
+0

это выглядит точно так же, как мне нужно, однако я получаю ошибку php, когда я пытаюсь запустить это. «не может получить доступ к самому себе: когда класс класса не активен». – Jay

+0

Вы можете скопировать метод «copyImg» из контроллеров/admin/AdminImportController.php в свой класс (как метод) или скрипт (как функция) Если вы скопируете его как функцию, просто удалите «защищенный статический» и удалите «self ::» при вызове. – PrestaShopDeveloper

+0

Мои 2 цента, я заметил, что передача последнего параметра copyImg в «true» намного больше ... mh ... безопасна, потому что PS будет восстанавливать изображение, я использовал этот код, и он работает только в том случае, если этот параметр является «true» –

Смежные вопросы