2016-01-05 5 views
3

В настоящее время я работаю над плагином XML, который автоматически импортирует большое количество продуктов из внешнего источника (дистрибьютора) в мой Prestashop. Импортёр XML отлично работает - он добавляет все данные продукта в базу данных моего магазина, но у меня проблема с загрузкой изображений. У меня есть URL для моего внешнего изображения, хранящегося в переменной PHP в плагине. Prestashop использует 7 разных размеров одного изображения при загрузке (не из плагина XML, а из собственной панели администратора при загрузке продукта). Мой загрузчик XML находится в tools/xmlplugin. Функция загрузки имеет эту базовую структуру:Импорт XML-продуктов в Prestashop

myUploadFunction($external_product_ID) 
    { 
     ..upload to db functions here... 
     $external_image_url_path; 
     $external_image_name;  //ex. image_001.jpg 
    } 

Можете ли вы помочь мне с логистикой загрузки изображений и создания нескольких различного размера изображений в папке изображения Prestashop.

PS: Плагин XML не подключен к ядру Prestashop (только для базы данных). И я не могу понять структуру URL-адресов профильных изображений Prestashop.

Любые идеи?

+0

версия ведьмы Prestashop вы используете? –

+0

версия 1.6.1.3. –

+0

Имена изображений переписываются в '.htaccess'. Кроме того, правильным способом импорта изображений было бы уменьшить задачу создания и загрузки, а продукт был сохранен в БД. Импорт изображений в синхронных режимах занимает слишком много времени – gskema

ответ

2

Для начала вам нужно создать новую запись для своего изображения в базе данных. Если вы посмотрите на Prestashop Image Class, он сохраняет изображения в каталогах, созданных с вашего идентификатора изображения. Чтобы получить путь, вам нужно разбить каждый номер вашего идентификатора изображения. Вот Prestashop метод класса Image:

/** 
* Returns the path to the folder containing the image in the new filesystem 
* 
* @param mixed $id_image 
* @return string path to folder 
*/ 
public static function getImgFolderStatic($id_image) 
{ 
    if (!is_numeric($id_image)) { 
     return false; 
    } 
    $folders = str_split((string)$id_image); 
    return implode('/', $folders).'/'; 
} 

В defines.inc.php _PS_IMG_DIR_ определяет папку изображений (по умолчанию: /img/) и _PS_PROD_IMG_DIR_ определяет папку изображений продукта (по умолчанию: p/). по умолчанию папка для изображения продукта затем /img/p/.

Если изображение имеет для идентификатора 927 и название «test.jpg» будет храниться в /img/p/9/2/7/927.jpg

Сначала попробуйте это в течение нескольких продуктов, а затем в Prestashop BackOffice перейти к Preferences > Images > regenerate thumbnails (at the bottom of the page). Prestashop должен генерировать размеры каждого продукта для вас.

Пожалуйста, дайте мне знать, если он не работает или вам нужны дополнительные инструкции.

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