Archives du blog
Prestashop : Impossible de créer un nouveau transporteur !
Après être passé de la version 1.4.1 à la version 1.4.4.1 de Prestashop, j’ai remarqué qu’il m’était impossible de créer ou de modifier un transporteur dans le cadre de la livraison des produits du site.
A chaque modification que je souhaitais faire, j’obtenais sur le Back-Office le message d’erreur (peu explicite) :
une erreur s’est produite pendant la création de l’objet carrier
Après analyse de la base de données des versions Prestashop 1.4.1 et 1.4.4.1, je constate assez rapidement qu’il n’y a pas le même nombre de tables entre les bdd des deux versions. La plus ancienne comprend 176 tables, tandis que la plus récente en compte seulement 163 ! Il y a donc eu un sacré ménage de fait !
J’ai donc recherché la table « ps_carrier » (ou « pss_carrier » dans mon cas), je l’ai trouvé. Par contre, la structure n’était pas la même ! En effet, on constate que dans la version 1.4.4.1, il y a un champ « is_free » situé après le champ « is_module », qui n’apparait pas dans la version précédente de Prestashop.
Je l’ai donc ajouté :
ALTER TABLE `ps_carrier` ADD `is_free` TINYINT( 1 ) UNSIGNED NOT NULL DEFAULT '0' AFTER `is_module`
Depuis, ça fonctionne ! On peut ajouter un nouveau transporteur, modifier un transporteur existant, supprimer le transporteur, etc.
Prestashop : problème de marge blanche avec JQZoom
JqZoom est une application, basée sur le framework Javascript JQuery, permettant de zoomer sur la photo d’un produit sur la fiche produit (par exemple).
Par le passé, j’ai déjà utilisé JQ Zoom et il est vraiment pas mal ! Il est assez facilement paramétrable, il fonctionne bien… et c’est très agréable !
De base, JqZoom est installé sur Prestashop (du moins, à partir de la version 1.3 de Prestashop).
Pour l’activer ou désactiver JqZoom, aller dans l’interface d’administration de Prestashop > Onglet Préférences > Sous-onglet Produits.
Problème de marge blanche avec JqZoom sur Prestashop : Comment faire ?
Quand est-ce que ce bug a lieu ?
La plupart du temps sur Prestashop.
Pourquoi y a-t’il une marge blanche en Haut et en Bas ?
Cet marge blanche peut être présente sur tous les côtés, selon la taille de l’image zoomée. Si l’image est en mode portrait, alors on aura les marges blanches à gauche et à droite. Si l’image est en mode paysage, les marges seront en haut et en bas. Pour ne pas avoir les marges, il faudrait une image aux dimansions d’un carré.
Pourquoi l’image doit-elle être de forme carrée ?
Sur Prestashop 1.4 (c’est celle que j’utilise actuellement), lorsque l’on survole l’image à zoomer, Prestashop appelle une autre déclinaison de l’image à zoomer !
Cette image est nommée de la façon suivante : http://www. mon_domaine.com/img/p/id_produit–id_image-thickbox.jpg (ex : « ./img/p/10-36-thickbox.jpg »)
Or, le format de l’image Thickbox est par défaut de 600 x 600 px.
2 Solutions :
– Si toutes vos images sources ont toutes les mêmes dimensions et/ou proportions, dans ce cas il est préférable de modifier les dimensions des différentes images qui seront utilisées, et ce via l’interface d’administration (Cf. écran ci-contre).
– Si vos images sont tantôt verticales, tantôt horizontales, il sera préférable d’effectuer la modification de code ci-dessous.
Comment éviter les problèmes de marge blanche avec JqZoom et Prestashop ?
Vos images n’ont pas les mêmes proportions ? Du coup, vous aurez une marge blanche! Pour éviter celà, il faut non plus appeler l’image thickbox ayant une dimension définie, mais appeler l’image originale.
Cette image est nommée de la façon suivante : http://www. mon_domaine.com/img/p/id_produit–id_image.jpg (ex : « ./img/p/10-36.jpg »)
Pour cela, ouvrez le fichier product.tpl (/www/themes/mon_theme/product.tpl).
A la ligne 150, vous êtes sensés avoir :
{if $jqZoomEnabled}class="jqzoom" alt="{$link->getImageLink($product->link_rewrite, $cover.id_image, 'thickbox')}" {else} title="{$product->name|escape:'htmlall':'UTF-8'}" alt="{$product->name|escape:'htmlall':'UTF-8'}" {/if} id="bigpic" width="{$largeSize.width}" height="{$largeSize.height}" />
à modifier en :
{if $jqZoomEnabled}class="jqzoom" alt="{$link->getImageLink($product->link_rewrite, $cover.id_image, '')}" {else} title="{$product->name|escape:'htmlall':'UTF-8'}" alt="{$product->name|escape:'htmlall':'UTF-8'}" {/if} id="bigpic" width="{$largeSize.width}" height="{$largeSize.height}" />
On a supprimé le paramètre thickbox du lien généré dans la balise de texte alternatif.
ATTENTION : Pensez à supprimer les fichier de cache des templates dans le répertoire ./www/tools/smarty/compile !
NB : Si toutefois votre image originale est plus petite que l’image survolée, alors ça ne sera pas esthétique car d’une part il n’y aura pas de zoom, et d’autre part, le déplacement de la souris ne fera pas déplacer l’image zoomée.