Vous avez installé la version Prestashop 1.4.7 et vous rencontrez un problème lors de la personnalisation (envoi d’images par les internautes pour personnaliser un produit) : l’image n’est pas transférée au serveur.
Login Art vous propose la résolution des deux sources d’erreurs à l’origine du problème.
Nous ne sommes en aucun cas responsable de l’utilisation des codes transmis. Faites une sauvegarde des fichiers d’origine avant toute manipulation.
Le premier problème porte sur l’utilisation de la méthodologie AJAX pour le transfert des images.
Le second problème implique l’utilisation de variables de configuration pour la création des miniatures.
Problème AJAX
Allez dans le fichier js pour modifier le fonctionnement
/themes/prestashop/js/product.js
Attention, si vous utilisez un thème personnalisé, recherchez le fichier dans le dossier de votre thème
/themes/mon_theme_XXX/js/product.js
Allez à la fonction « saveCustomization ».
Commentez l’ensemble de la fonction et placer le code suivant :
function saveCustomization() { //v1.4.6 $('#quantityBackup').val($('#quantity_wanted').val()); customAction = $('#customizationForm').attr('action'); $('body select[id^="group_"]').each(function() { customAction = customAction.replace(new RegExp(this.id + '=\\d+'), this.id +'='+this.value); }); $('#customizationForm').attr('action', customAction); $('#customizationForm').submit(); }
L’upload se fait avec rechargement de la page de l’article et non plus via ajax.
Problème des variables de configuration
Allez au niveau du fichier « /controlers/ProductController.php ». Recherchez la fonction « pictureUpload » qui traite l’image envoyée en upload.
Si vous faites le die sur les dimensions utilisées pour créer la mini, vous constaterez qu’il s’agit des valeurs maximales attendues pour un envoi d’image par l’internaute.
Ces valeurs sont définies dans le back office (préférences > produits > largeur / hauteur).
die( 'dim : '.(int)(Configuration::get('PS_PRODUCT_PICTURE_WIDTH')).'x'.(int)(Configuration::get('PS_PRODUCT_PICTURE_HEIGHT')));
Code originel :
if ($error OR (!$tmpName = tempnam(_PS_TMP_IMG_DIR_, 'PS') OR !move_uploaded_file($file['tmp_name'], $tmpName))) return false; // Original file elseif (!imageResize($tmpName, _PS_UPLOAD_DIR_.$fileName)) $this->errors[] = Tools::displayError('An error occurred during the image upload.'); // A smaller one elseif (!imageResize($tmpName, _PS_UPLOAD_DIR_.$fileName.'_small', (int)(Configuration::get('PS_PRODUCT_PICTURE_WIDTH')), (int)(Configuration::get('PS_PRODUCT_PICTURE_HEIGHT')))) $this->errors[] = Tools::displayError('An error occurred during the image upload.'); elseif (!chmod(_PS_UPLOAD_DIR_.$fileName, 0777) OR !chmod(_PS_UPLOAD_DIR_.$fileName.'_small', 0777)) $this->errors[] = Tools::displayError('An error occurred during the image upload.'); else $cart->addPictureToProduct((int)($this->product->id), $indexes[$fieldName], $fileName);
Code de remplacement :
if ($error OR (!$tmpName = tempnam(_PS_TMP_IMG_DIR_, 'PS') OR !move_uploaded_file($file['tmp_name'], $tmpName))) return false; // Original file elseif (!imageResize($tmpName, _PS_UPLOAD_DIR_.$fileName)) $this->errors[] = Tools::displayError('An error occurred during the image upload.'); // A smaller one elseif (!imageResize($tmpName, _PS_UPLOAD_DIR_.$fileName.'_small', 100, 100)) $this->errors[] = Tools::displayError('An error occurred during the image upload.'); elseif (!chmod(_PS_UPLOAD_DIR_.$fileName, 0777) OR !chmod(_PS_UPLOAD_DIR_.$fileName.'_small', 0777)) $this->errors[] = Tools::displayError('An error occurred during the image upload.'); else $cart->addPictureToProduct((int)($this->product->id), $indexes[$fieldName], $fileName);
Toute l’équipe Login art vous souhaite un bon e-commerce avec Prestashop 1.4.7, en espérant que ces codes vous éviteront des heures de galère.
Malgré ces 2 modifications ça marche pas mieux chez moi HELP
Décrivez l’erreur que vous obtenez. Y a-t-il arrêt du processus à un moment ? Y a-t-il chargement de l’image ou pas du tout ?
En fait j’ai ré installé votre modif, mais celà ne fonctionne que jusqu’à une certaine taille d’image, moi il me faut récupérer des images d’environ 1 à 2 Mo –
Erreur : Il y a 1 erreur : l’image est trop grande (2241.206Ko). Taille max. : 131.072Ko
Donc peut on modifier celà pour uploader plus grand ? Merci bien.
Il faut aller dans
– panneau d’administration > onglet « préférences » > voir en bas de page « limite de téléchargement d’image » (en mégaoctets)
OU
– panneau d’administration > onglet « préférences » > « produit » > « taille maximum des images produits » (en octets)
Placez une valeur maximale dans les deux cas.
Il peut aussi s’agir d’une limite côté serveur en taille d’upload.
Souhaitant que cela vous aidera à résoudre votre problème.
C’est pourtant ce que je viens de faire, et lors d’un test :
Il y a 1 erreur :
l’image est trop grande (1472.455Ko). Taille max. : 131.072Ko
C’est un monde ça non ?
Pouvez-vous nous donner les différentes valeurs présentes sur la page :
panneau d’administration > onglet “préférences” > “produit”
> “taille maximum des images produits” (en octet)
> « hauteur »
> « largeur »
avez vous un email personnel que je vous explique ce qui m’est arrivé avec mon client ? La mienne, vous l’avez ou alors je vous la redonne : armandw arobase alposte . net
Je vous expliquerai le comportement de ma cliente … Merci de me contacter à cette adresse.
armandw @ laposte.net j’ai tapé trop vite … Excusez moi .
Alors, un gros BIG UP pour ceci !
Vous m’avez sauvé ma journée qui finissait par devenir pénible. MERCI ❤
Merci votre tips ma mis sur la piste. En effet mes images étaient trop grande en dimension. Un traitement par lot pour les mettre toutes a 1024 avant upload, et c’est repartis.