Archives du blog

Comment retirer certains liens du footer d’origine de Prestashop ?

En bas de votre site internet, vous avez plusieurs liens :
Promotions, Nouveaux produits, Meilleures ventes, Contactez-nous, etc…

Ces liens de bas de page (« footer ») sont décomposés ainsi dans le code de Prestashop version 1.4.6.2 :
Des liens en dur saisis dans le fichier template + un appel des liens CMS définis via l’interface administrateur

Comment accéder aux liens CMS (Content Management System) :
Onglet « Modules » / Rubrique « Fonctionnalités Front Office » / « Bloc CMS » et cliquer sur « configurer ».
Dans cette interface, on a d’une part la possibilité de mettre du contenu dans les colonnes de gauche et de droite, mais ce qui nous intéresse est la partie suivante : « Configuration des liens CMS en pied de page ».
Les cases à cocher permettent de choisir les liens, vers les pages de contenu que l’on a créées, que l’on souhaite faire afficher.
On remarque que sur notre site apparaissent les liens « Promotions, Nouveaux produits, Meilleures ventes, Contactez-nous ». Or, nous ne les trouvons pas dans les liens à faire apparaître ou non.
Prestashop à codé en fait « codé en dur » les liens vers les pages Promotions (prices-drop.php), Nouveaux produits (new-products.php), Meilleures ventes (best-sales.php), Magasins (stores.php), Contactez-nous (contact-form.php). C’est à dire que l’interface d’administration ne propose pas la possibilité d’afficher ou non ces liens. Ils sont présents d’office !
Bref… pour retirer certains de ces liens que vous ne souhaitez pas afficher, le mieux est de les « commenter » (les mettre en commentaire est préférable à les supprimer si vous souhaitez retrouver ces liens par la suite).

Comment modifier les liens de pied de page :
Ouvrir le fichier blockcms.tpl (/www/modules/blockcms/).
Ligne 49 vous avez le code suivant :

{if !$PS_CATALOG_MODE}<li class="first_item"><a href="{$link->getPageLink('prices-drop.php')}" title="{l s='Specials' mod='blockcms'}">{l s='Specials' mod='blockcms'}</a></li>{/if}

Pour commenter cette ligne qui utilise des balises de code Smarty, commentez le code de la façon suivante :

{* if !$PS_CATALOG_MODE}<li class="first_item"><a href="{$link->getPageLink('prices-drop.php')}" title="{l s='Specials' mod='blockcms'}">{l s='Specials' mod='blockcms'}</a></li>{/if *}

Vous faites la même choses pour les autres liens que vous souhaitez ne pas afficher (lignes suivantes).

REMARQUE :
Le nom de la classe de l’élément de liste (« li ») est « first_item » lorsque l’élément se trouve en tête. Autrement, l’élément aura pour nom de classe « item ».
Exemple :

<li class="{if $PS_CATALOG_MODE}first_{/if}item"><a href="{$link->getPageLink('new-products.php')}" title="{l s='New products' mod='blockcms'}">{l s='New products' mod='blockcms'}</a></li>

Bref, si l’on a mis en commentaire le premier lien (« Promotions »), alors il faudra changer le nom de la classe du premier élément de liste affiché.
<li class="item">
Deviendra :
<li class="first_item">

Rappel : En cas de non mise à jour du site, il s’agit la plupart du temps d’un problème de cache !
Il vous faut vider le cache manuellement sur votre site, soit en local, soit sur le serveur via un logiciel de FTP. Vous avez accès aux fichiers du cache dans le répertoire : /tools/smarty/compile/
Il s’agit de fichiers compiler. Il vous faut supprimer tous les fichiers du répertoire “Compile” à l’exception du fichier Index.php.
J’aurais en effet du le préciser comme dans les autres articles.
J’espère que cela aura résolu votre problème !

Voilà… tout est dit!
N’hésitez pas à commenter ou mettre un petit « Like »! Merci. 😉

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.

OVH : Mise à jour du site Prestashop préinstallé

J’héberge le site de mon client chez OVH. Chose importante à savoir, OVH propose de fournir Prestashop déjà installé (il n’y a qu’a cliquer sur quelques boutons). Donc à première vue c’est pas mal du tout ! Sauf que si l’on va plus loin dans la démarche de création du site, on s’aperçoit de deux choses :

  • La version de Prestashop que OVH propose est Prestashop 1.4.1 (donc, on ne bénéficie pas des dernières versions et donc des correctifs de bugs, etc.)
  • nous n’avons pas accès à la base de données via l’interface d’administration d’OVH.

Du coup, je suis passé de la v.1.4.1 à la v.1.4.4.1 de la façon suivante :

  • sauvegarde des fichiers du site via le FTP
  • sauvegarde de la base de données Prestashop via l’interface d’admin (onglet « Outils » puis « sauvegarde base de données »)
  • installation sur mon serveur FTP des fichiers de la nouvelle version de Prestashop (v. 1.4.4.1) et lancement de la procédure d’installation via l’adresse http://www.mon_site/install.php/
  • création d’une base de données via OVH Manager
  • importation de la sauvegarde de l’ancienne base de données.
Sauf qu’après quelques temps, j’ai constatés quelques bugs, liés justement à cette mise à jour : message d’erreur lors de la création d’un transporteur.

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.

Comment activer ou désactiver JqZoom sur Prestaship

Comment activer ou désactiver JqZoom sur Prestashop

 Problème de marge blanche avec JqZoom sur Prestashop : Comment faire ?

 bug marge blanche Jquery JqZoom

bug marge blanche Jquery JqZoom

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_produitid_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.

Parametrage de la taille des images produits dans prestashop

Parametrage de la taille des images produits dans prestashop

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_produitid_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 !

Problème JqZoom avec une petite image

Bug JqZoom avec une petite image

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.

La navigation à facette – Affiner sa recherche grâce à Prestashop 1.4

La Navigation à Facette de Prestashop 1.4

La Navigation à Facette de Prestashop 1.4

La Navigation à facette proposée de base en module sous Prestashop 1.4 , permet d’effectuer des recherche dans la base d’articles porposée par l’e-commerce.

Grâce à cette navigation à facette, on peut affiner cette recherche grâce aux filtres proposés (ces filtres sont les attributs des articles vendus, en stocks ou non, disponibles ou non).

Toutefois, le module de recherche qu’est la navigation à facette, n’est actuellement proposé que sous forme de Beta. C’est à dire que malgré sa publication sur la version 1.4 de Prestashop, il subsiste quelques bugs qui n’ont pas encore été corrigés. Alors prudence…

Nous avons décelé un bug dans le fonctionnement de la navigation à facette. Corrigez ce bug dès maintenant grâce à notre topic.

Prestashop : accès à la base de données via l’administration

Pour ma part, je suis chez OVH, avec le Prestashop v.1.4.1 qui est inclus dans l’offre PRO OVH.
Ce n’est pas la dernière version de Prestashop mais bon… (la dernière version étant Prestashop 1.4.3 à l’heure de ce post)

Concernant la base de données je n’y ai pas accès et n’ai donc pas pu choisir le préfixe du nom des tables. Cependant, via le Back-Office de Prestashop 1.4, on peut retrouver certaines informations qui peuvent s’avérer très utilses.

Pour cela, aller dans votre espace d’administration Prestashop, puis dans l’onglet Préférences puis cliquer sur l’onglet de sous-rubrique Base de Données.

Ainsi, vous avez accès :

  • au nom du serveur de base de données (en local localhost ou en production)
  • au nom de la base de données que vous utilisez pour la e-boutique
  • au préfixe des noms de tables de la base de données (souvent ps_ , mais chez OVH, de base le préfixe est pss_ )
  • au nom d’utilisateur ayant accès à la base de données
  • et un champ permettant de changer le mot de passe de l’utilisateur de la base de données (laisser vide si vous ne souhaitez pas le modifier).
  • enfin, la liste des tables présentes dans la base de données en question (leur nom commençant pas le fameux préfixe).
Le fait que le préfixe ne soit pas ps_ de base (comme chez OVH avec son hébergement PRO), peut parfois poser problème. Voir le problème de chargement du résultat de la navigation à facette sous Prestashop 1.4.

Prestashop 1.4 : Problème avec la navigation à facette

Depuis quelques temps maintenant, je travail (entre autre) sur Prestashop, le fameux e-commerce Français, concurrent de Magento, et qui fait beaucoup parler de lui !
Actuellement en version 1.4, beaucoup plus améliorée par rapport à la version 1.3, mais néanmoins bugguée sur certaines fonctionnalités telle que la navigation à facette qui était tant attendue !

Qu’est-ce que la navigation à facette ? Il s’agit en quelque sorte d’une interface permettant d’affiner notre recherche sur des produits en fonction de critères propres à chaque produit. Voir la navigation à facette pour plus de détail.

J’ai eu l’occasion de découvrir un bug plutôt bloquant :
Lorsque l’on clique sur l’un des critères, on a une image qui montre que la page charge les données en rapport avec le critère sélectionné.
Le problème est que la moulinette (le chargement) ne s’arrête pas, et on n’obtient pas le résultat escompté.

Il s’agit de problèmes tout bête dans le code, mais il faut le savoir :

1. Ouvrir le fichier blocklayered.php (présent dans le répertoire /www/modules/blocklayered/).

A la ligne 263 il faut remplacer “new category” par “new Category” (il manque la majuscule).

Mauvais code :

$parent = new category($id_parent);

Bon code :

$parent = new Category($id_parent);

2. Et aussi remplacer les “ps_” par le préfixe de vos tables ou par ‘._DB_PREFIX_.’ comme à la ligne 266.

Mauvais code :

$queryFilters .= ' AND p.id_product IN ( SELECT pa.`id_product`
	FROM `ps_product_attribute_combination` pac
	LEFT JOIN `ps_product_attribute` pa
ON (pa.`id_product_attribute` = pac.`id_product_attribute`) WHERE ';

Bon code :

$queryFilters .= ' AND p.id_product IN ( SELECT pa.`id_product`
	FROM `'._DB_PREFIX_.'product_attribute_combination` pac
	LEFT JOIN `ps_product_attribute` pa
	ON (pa.`id_product_attribute` = pac.`id_product_attribute`) WHERE ';

Comment accéder à la base de données dans l’espace d’administration de Prestashop 1.4.1 ?