Procédure de migration SQL pour Prestashop 1.6 vers 1.7

Procédure de migration SQL pour Prestashop 1.6 vers 1.7

Cette procédure sera utile pour tout e-commerçant utilisant Prestashop et souhaitant mettre son site au propre de manière radicale. Elle peut être utiliser lors d’une mise à niveau importante (de 1.4 à 1.6 par exemple), suite à un hack de votre site et une altération de vos fichiers sources ou bien suite à de mauvaises manipulations.

Il est à noter que cette procédure demeure quasiment entièrement d’actualité lorsque vous souhaitez effectuer une mise à jour de Prestashop 1.6 vers 1.7.

Pré-requis :

  • Effectuer un back-up du FTP et de la base de données,
  • Mettre le site en maintenance,
  • Avoir les accès au serveur FTP et à phpMyAdmin à porté de doigts.
  • Copier et garder à disposition la COOKIE_KEY (présente dans le fichier /config/settings.inc.php)

 

1. Mettre la base de données à jour

Pour commencer, sur le site original, il faut mettre la base de données à jour si elle n’est pas déjà adaptée pour la version 1.6 de PrestaShop. Pour cela, il suffit d’utiliser OneClickUpgrade et de suivre les instructions.

 

2. Exporter les tables suivantes :

A l’aide de PhpMyAdmin, nous allons exporter les tables contenant les données qui nous intéressent.Une fois de plus, vous êtes responsable de votre base de données.

Les tables Customers :

  • ps_address
  • ps_customer
  • ps_customer_group
  • ps_customer_message
  • ps_customer_thread
  • ps_message
  • ps_message_readed

Les tables CMS

  • ps_cms
  • ps_cms_block
  • ps_cms_block_lang
  • ps_cms_block_page
  • ps_cms_block_shop
  • ps_cms_category
  • ps_cms_category_lang
  • ps_cms_category_shop
  • ps_cms_lang
  • ps_cms_role
  • ps_cms_role_lang
  • ps_cms_shop

Les tables Product attibut

  • ps_attribute
  • ps_attribute_group
  • ps_attribute_group_lang
  • ps_attribute_group_shop
  • ps_attribute_impact
  • ps_attribute_lang
  • ps_attribute_shop

Les tables Category

  • ps_category
  • ps_category_group
  • ps_category_lang
  • ps_category_product
  • ps_category_shop

Les tables Products

  • ps_product
  • ps_product_attachment
  • ps_product_attribute
  • ps_product_attribute_combination
  • ps_product_attribute_image
  • ps_product_attribute_shop
  • ps_product_carrier
  • ps_product_country_tax
  • ps_product_download
  • ps_product_group_reduction_cache
  • ps_product_lang
  • ps_product_sale
  • ps_product_shop
  • ps_product_supplier
  • ps_product_tag

Les tables Stock

  • ps_stock
  • ps_stock_available
  • ps_stock_mvt
  • ps_stock_mvt_reason
  • ps_stock_mvt_reason_lang

Les tables Cart (Panier)

  • ps_cart
  • ps_cart_cart_rule
  • ps_cart_product
  • ps_cart_rule
  • ps_cart_rule_country
  • ps_cart_rule_lang

Les tables Order (Commandes)

  • ps_orders
  • ps_order_carrier
  • ps_order_cart_rule
  • ps_order_detail
  • ps_order_detail_tax
  • ps_order_history
  • ps_order_invoice
  • ps_order_invoice_payment
  • ps_order_invoice_tax
  • ps_order_payment

Les tables Carrier (Transporteurs)

  • ps_carrier
  • ps_carrier_group
  • ps_carrier_lang
  • ps_carrier_shop
  • ps_carrier_tax_rules_group_shop
  • ps_carrier_zone
  • ps_range_price
  • ps_range_weight

Les tables Tax (Taxes)

  • ps_tax
  • ps_tax_lang
  • ps_tax_rule
  • ps_tax_rules_group
  • ps_tax_rules_group_shop

 

3. Faire une nouvelle installation de Prestashop (1.6 ou 1.7)

Après avoir exporté nos tables, il nous faut une nouvelle base de données pour la réception. Pour cela, nous allons installer un Prestashop tout propre après avoir supprimé l’ancien de notre serveur FTP ainsi que l’ancienne base de données (/!\ d’avoir effectué une sauvegarde au préalable). Après avoir installé la nouvelle version de PrestaShop, pensez à :

  • Mettre le site en maintenance,
  • Activer le mode « debug »,
  • Désactiver le cache,
  • Forcer la compilation Smarty.

4. Supprimer les tables correspondantes aux tables à importer dans la nouvelle base de données

Dans cette nouvelle base de données, nous reprenons la liste des tables que nous avons exportées et nous les supprimons. Cela nous permet ensuite de pouvoir importer nos tables originales tranquillement.

Voici donc la requête SQL à envoyer (attention, celle-ci est irréversible)

Attention : toute suppression est définitive !

5. Importer les nouvelles tables

Effectuer l’import des tables d’origine dans la nouvelle base de données. Si vous avez changé le préfixe des tables, vous pouvez utiliser ces requêtes SQL :

6. Transférer la COOKIE_KEY sur le nouveau site

Dans le fichier config/settings.inc.php de notre site original se trouve une constante appelée COOKIE_KEY. Nous allons copier celle-ci et l’insérer dans le fichier config/settings.inc.php à la place de la nouvelle clé.

Cela permet à Prestashop de comparer correctement les mots de passe des clients qui ont été cryptés en MD5 avec la COOKIE_KEY de notre site original.

NB : Cette manipulation rend notre compte administrateur inutilisable car ayant été crypté avec une nouvelle clé (celle de la nouvelle installation), notre mot de passe est maintenant en erreur. Pour corriger cela, il suffit de nous rendre sur la table ps_employee via phpMyAdmin, d’éditer l’entrée de notre compte, de copier la COOKIE_KEY dans le champ « password » et de la faire suivre directement avec notre nouveau mot de passe. On enregistre et nous avons de nouveau accès à l’administration de notre site.

7. Importer le dossier img/

Pour pouvoir afficher les images que nous avions sur notre site d’origine, il nous suffit de copier la totalité du dossier img/ sur la nouvelle installation. Il y a déjà un dossier de ce nom. Nous pouvons le renommer ou bien le compresser afin de l’avoir à disposition (ça peut servir).

8. Vérification du bon fonctionnement

Nous pouvons maintenant tester si le site fonctionne correctement. Nous allons essayer de créer un compte, de passer une commande, de nous connecter avec un ancien compte pour vérifier que la COOKIE_KEY est bien en place. Nous allons aussi vérifier le bon fonctionnement du Back-Office. Est-ce que nous voyons bien les anciennes commandes et tout les produits ?

Un problème que j’ai rencontré lors de cette procédure est un décalage entre l’ID de la catégorie principale (home) et l’ID de cette même catégorie sur la nouvelle installation. Le message d’erreur était « Root category must be an integer value ». La solution était alors de corriger l’ID de la catégorie principale dans la table « ps_shop ». Elle est à « 2 » sur les nouvelles installations de Prestashop mais dans notre cas (nous sommes passé de PS 1.6 à PS 1.7) l’ID de la catégorie « home » était égale à « 1 ».

9 Terminé !!

Il ne reste plus qu’à désactiver le mode maintenance ainsi que le mode « debug » et à reprendre la production là où elle avait été laissée.

J’espère que ce tutoriel vous aura été utile. Si vous souhaitez que nous nous occupions de votre mise à jour, contactez-nous !

 

Halte aux inscriptions fantômes

Halte aux inscriptions fantômes

Depuis quelques jours, les boutiques sous PrestaShop 1.3 à 1.7 subissent des attaques depuis le formulaire de création de compte clients.

Comme le captcha de Google ne suffit pas, je vous donne une solution qui fonctionne.

Voici la procédure :

Crée un fichier que vous nommerez Validate.php que vous mettrez dans /overide/class/…

Dans ce fichier vous mettrez :

Ensuite

Crée un fichier que vous nommerez Costumer.php que vous mettrez dans /overide/class/…

Dans ce fichier vous mettrez :

Pour finir, allez dans /cache/… et supprimez le fichier cache_index.php

Et voila, normalement, vous n’aurez plus ses inscriptions fantômes.

Vous êtes pressé? Téléchargez directement les fichier en cliquant sur leur nom : validate.php – Costumer.php

!! Vous trouverez un autre fichier nommé ContactController.php dans le dossier overide/controllers/front/. Ce fichier est un complément qui bloque d’office les adresses email en .ru, .vn, .etc….

Vous trouverez une solution pour la version PrestaShop 1.7 sur le blog de mon ami Webbax

Si vous avez des questions ou simplement envie d’une aide pour l’installation de ses fichiers, n’hésitez pas à nous contacter.

A bientôt pour de prochaines aventures

Nouveau module : LOGIK CONTEST PLAY

Nouveau module : LOGIK CONTEST PLAY

Découvrez notre dernière création pour vos boutiques sous PrestaShop ou ThirtyBees.

Améliorez votre trafic, donnez de la vie à votre site et boostez votre fichier clientèle en créant des jeux concours.

Programmez des offres commerciales avec une date de début et de fin, permettant de mettre en avant une opération marketing :
  • Personnalisation des champs du formulaire
  • Tirage au sort du / des gagnant(s)
  • Construction d’une base client par rapport aux offres
  • Ajoutez de l’interaction à votre boutique
  • Fidélisez la clientèle
  • Formulaire sécurisé avec le Recaptcha de Google
  • Possibilité d’exporter l’ensemble des participations au format CSV.
  • Afficher une bannière dans le jeu concours.
  • Afficher les conditions pour le jeu concours dans le formulaire à l’aide des pages CMS.
  • Vérification des personnes déjà inscrites par rapport à l’adresse mail et le numéro de téléphone.

 

Vous pouvez trouver plus d’informations sur notre site de développements.

 

 

Nouveau module : Catalogue Price PDF

Nouveau module : Catalogue Price PDF

Nous avons le plaisir de vous présenter notre nouvelle création pour les solutions PrestaShop et ThirtyBees.

Vous avez besoin de générer un fichier PDF de tous les produits que vous avez sur votre boutique PrestaShop/ThirtyBees ?

Ce module permet de le faire assez facilement et peut générer un gros fichier à condition que votre serveur soit performant (VPS ou dédié).

Un module pratique pour présenter son offre en « offline » ou pour disposer d’un catalogue en format papier lorsqu’on est en déplacement.

 

Optimisation des performances de PrestaShop

Est-il nécessaire d’améliorer la vitesse de chargement de une boutique PrestaShop ? On va répondre à cette question dans l’article qui suit.

La rapidité de chargement d’une boutique en ligne est primordiale même si ce n’est pas le seul élément à prendre en compte pour augmenter le nombre de ventes. Au-delà de 3 secondes de chargement, la moitié des utilisateurs sont susceptibles de quitter la boutique. Ça fait réfléchir… Il est compliqué sans un bagage technique minimum de déterminer l’impact de la vitesse de chargement sur les ventes et surtout d’optimiser le site web.

Voici un guide complet pour optimiser le chargement de PrestaShop, en compilant toutes les informations que j’ai pu lire et mettre en pratique.

 

Quelle est la vitesse de chargement de mon site PrestaShop ?

J’utilise au quotidien plusieurs outils pour mesurer la vitesse des sites web. Je partage avec vous quelques outils efficaces pour tester la vitesse de votre site :

  • Page Speed Insight : analyse du contenu et recommandations
  • GTmetrix : performant car il combine 2 outils à savoir Page Speed et Yslow
  • Wichloadfaster : parfait pour se comparer au concurrent
  • Loadimpact : test et optimisation avec simulations
  • Pingdom : détails sur les éléments, fichiers et temps de chargement

 

La vitesse de chargement bloque-t-elle mes ventes ?

À partir du moment où vous connaissez la vitesse de chargement de votre site, lisez quelques conséquences directes du temps de chargement sur les ventes d’une boutique.

Voici une réponse en quelques chiffres dans cette infographie :

  • Au-delà de 1,5 secondes, votre boutique est lente et donc converti moins
  • Si votre site génère 100€ par jour, avec 1 seconde de temps de chargement en moins, vous pouvez prétendre gagner 7€ de plus par jour, soit 2555€ par an !
  • 1 seconde de plus pour Amazon, c’est 1% de revenus perdus !
  • Walmart gagne 2% sur son taux de conversion à chaque seconde gagnée sur le temps de chargement !
  • Mozilla a augmenté de 15% son taux de téléchargement avec 2,2 secondes économisées !

En somme, il est impossible de savoir combien exactement vous allez pouvoir gagner en augmentant les performances de votre boutique en ligne. En revanche, il est tout à fait possible d’avoir une prévision sur la tendance liée à l’augmentation des performances de votre site.

 

Comment optimiser la vitesse de chargement de PrestaShop ?

Une fois que vous avez pris connaissance de l’impact de la vitesse de chargement sur vos ventes, il vous reste à mettre en pratique ce que vous avez vu. Je vais vous montrer dans la suite de cet article comment mettre en place diverses optimisations assez simples pour améliorer la vitesse d’affichage de PrestaShop.

Pour information, j’ai travaillé sur la version 1.6.1.15 de PrestaShop mais si vous êtes sur une version différente, les recommandations peuvent aussi s’appliquer dans la majorité des cas.

PrestaShop utilise Smarty comme moteur pour interpréter les fichiers de votre thème pour les afficher. Lorsque vous êtes en développement, il est nécessaire de compiler les données et vider le cache pour voir les modifications effectuées. En production, les réglages précédents sont inutiles et car ils obligent PrestaShop à charger votre site entièrement à nouveau à chaque chargement de page et c’est long !

Réglages en production (voir capture d’écran) :

  • Dans l’admin > Paramètres avancées > Performances > Smarty
  • Cochez « Ne jamais recompiler les fichiers de templates »
  • Cochez oui pour « Cache »

 

Fonctionnalités de base

PrestaShop par défaut propose un large éventail de fonctionnalités. Toutes ces fonctionnalités mettent du temps à s’afficher donc si vous n’en n’utilisez pas une, désactivez-la.

 

CCC

Toujours dans la section « Performances » de PrestaShop, la partie « CCC » qui signifie « Combiner, Concaténer et Cache » permet de réunir en un seul fichier css ou javascript l’ensemble des fichiers utilisés sur votre PrestaShop. La réduction du code supprime les espaces inutiles tandis que l’optimisation Apacje joue sur la compression gzip et l’amélioration du cache.

Réglages en production (voir capture d’écran) :

  • Dans l’admin > Paramètres avancées > Performances > CCC
  • Cochez oui pour « Smart cache pour les feuilles de style »
  • Cochez oui pour « Smart cache pour le code JavaScript »
  • Cochez oui pour « Réduction du code HTML »
  • Cochez oui pour « Compression du JavaScript dans le code HTML »
  • Cochez oui pour « Déplacer le code JavaScript à la fin »
  • Cochez oui pour « Optimisation Apache«

Pour de multiples raisons, votre thème peut ne pas être compatible avec un ou plusieurs paramètres évoqués ci-dessus. Dans ce cas, il est possible de n’activer qu’une ou plusieurs de ces options. Egalement, je vous invite à vous rapprocher de votre intégrateur pour solutionner les points concernés.

 

Serveur de média ou CDN

Les serveurs de média ou CDN (Content Delivery Network) permettent de charger les fichiers images, css, javascript, polices…depuis plusieurs serveurs.

Vous avez 3 domaines différents : indiquez-les dans les champs prévus et vos contenus seront chargés en simultanée depuis 3 serveurs différents, donc une utilisation de bande passante répartie.

Vous avez 3 sous-domaines : indiquez-les dans les champs prévus et vos contenus seront chargés en simultané depuis 3 sous-domaines différents. Vous n’offrirez pas plus de bande passante mais plus de téléchargements en simultanée.

Réglages en production :

  • Dans l’admin > Paramètres avancées > Performances > Serveur de média
  • Remplissez les 3 champs avec vos domaines ou sous-domaines

[edit du 03/10/2017]

On m’a posé une question à juste titre : « Doit-on avec les CDN dupliquer les fichiers de sa boutique PrestaShop ? » La réponse est non. PrestaShop va simplement répartir le chargement des fichiers via 3 sous-domaines ou domaines selon les cas. Le chargement des fichiers se fait alors de front et non en parallèle.

 

Chiffrement

Cette section de « Performances » invite à choisir a méthode chiffrement des cookies entre la bibliothèque mcrypt et la classe BlowFish locale.

Réglages en production :

  • Dans l’admin > Paramètres avancées > Performances > Chiffrement
  • Cochez « Utiliser Rijndael avec la bibliothèque mcrypt »

 

Cache

 

On détermine dans cette partie comment est géré le cache de votre serveur. Je vous conseille d’utiliser Memcached : si Memcached n’est pas installé sur votre serveur, je vous conseille le l’installer.

Réglages en production :

  • Dans l’admin > Paramètres avancées > Performances > Chiffrement
  • Cochez oui pour « Utiliser le cache »
  • Cochez pour « Système de cache » : « Memcached par PHP::Memcache »

 

Poids des images

Optimiser la tailles des images de PrestaShop permet de réduire la taille du site à charger. Il est donc primordial de réduire la taille des images. Pour ce faire, vous pouvez utiliser des outils gratuits en ligne comme :

  • PunyPNG : il permet de compresser les images JPG, GIF ou PNG et donne de très bons résultats
  • Tinypng : l’outil compresse les images notamment en PNG
  • Caesium Image Compressor : compression jusqu’à 90% sans perte de qualité

 

Dimensions des images

Votre navigateur au chargement d’une page parcourt tout le code de votre page et affiche le contenu en fonction des informations fournies. Indiquer les dimensions des images permet de donner directement l’information de taille de chaque image pour la placer dans la page au lieu de pré-charger les images pour les replacer ensuite.

 

Arche ou image de fond

Les images de fond ou background en anglais sont nécessaires à l’animation d’une boutique mais elles sont souvent grandes et lourdes à charger.

La technique du Lazy Loading est particulièrement utile si vous avez beaucoup d’image ou une image de fond également. Voici un article intéressant sur le sujet : https://bulledev.com/chargement-image-progressif-lazy-load/

 

Sprites css

Un sprite css est un regroupement d’images dans un seul fichier. Voici un sprite css utilisé par Google par exemple. Quand un visiteur affiche votre site, il ne charge alors qu’un seul fichier. Il n’y a donc qu’une seule requête effectuée sur le serveur ce qui est plus rapide. AlsaCréations explique très bien les sprites css dans cet article : https://www.alsacreations.com/tuto/lire/1068-sprites-css-background-position.html

En bref, pour 15 images, vous ne chargez qu’une seule image regroupant vos 15 images et c’est plus rapide !

Voici quelques outils gratuits pour générer des sprites css en ligne :

  • Stitches : assez simple avec du drag & drop
  • Toptal : simple et efficace
  • CSSSprites : upload et génération automatique

 

Compression gzip

En plus des différents points vus, vous pouvez activer la compression gzip qui va compresser les fichiers de votre site web pour réduire leur taille et donc le temps nécessaire pour les afficher dans le navigateur.

Pour activer la compression gzip, indiquer les lignes ci-dessous dans le fichier .htaccess situé à la racine de votre hébergement web :

« Defer parsing of JavaScript » ou placer judicieusement vos javascripts

Les balises <scripts> présents dans vos pages bloquent le chargement de celles-ci tant que les scripts ne sont pas chargés totalement. Il est donc important au choix de :

  • placer les scripts en fin de code, généralement avant la balise </body>
  • charger les scripts en asynchrone

Consultez cet article concernant l’optimisation des performances d’un site web et notamment du javascript : https://www.lije-creative.com/javascript-accelerer-chargement-site-internet/

 

Éviter d’appeler deux fois le même fichier

C’est évident car si on charge deux fois le même fichier, c’est plus long. Et c’est pourtant ce qui se produit si on charge ce fichier ainsi :

Chargez seulement les éléments visibles à l’écran

Votre client arrive sur une liste de 100 produits ou sur une fiche produit très longue mais veut-il forcément voir les 10 derniers produits ou les recommandations produits en bas de page ?

Il est conseillé de ne charger que les éléments visibles à l’écran en premier, puis les autres éléments au fur et à mesure si ils deviennent visibles.

Des modules permettent de faire cela et sont disponibles sur la plateforme Addons. Il est aussi possible de déterminer les éléments à charger seulement si ils sont visibles via ce tuto par exemple : https://bulledev.com/chargement-image-progressif-lazy-load/

 

Quels modules PrestaShop pour améliorer la vitesse de chargement ?

Je ne suis pas partisan d’installer une multitude de modules dans PrestaShop car ils vont certes améliorer la vitesse du site, mais ils vont aussi alourdir le site en parallèle.

Je peux citer un module d’optimisation pour PrestaShop que j’ai eu l’occasion de tester sur le site ayianna.ch : il s’agit de Page Cache. Voici les résultats GTmetrix avant et après installation avec la configuration par défaut :

  • avant installation : 58% et 77%
  • après installation : 62% et 81%

Constat : sans connaissance particulière en code, on peut tout à fait améliorer les performances avec certains modules efficaces. Attention car le module cité ne traite pas les points évoqués précédemment dans cet article.

 

Quel est l’impact de l’hébergement sur la vitesse de votre site web ?

Après avoir constaté que l’on peut optimiser via des points techniques ou des modules les performances de PrestaShop, on va parler d’un élément phare pour toute boutique en ligne : l’hébergement web.

Je vais parler de l’hébergement via mon témoignage en tant qu’utilisateur et client.

J’ai débuté en tant que freelance spécialisé PrestaShop & WordPress en 2009. A ce moment là, j’ai fait comme tout bon freelance qui débute : j’ai créé un portfolio et je l’ai hébergé chez OVH sur un hébergement mutualisé perso à 30€ HT / an. Autant dire que l’offre était imbattable pour être présent sur le web. J’ai bien dit présent, pas visible.

Aujourd’hui, mon site est toujours en place mais sur un autre hébergement : une offre de type dédié chez un hébergeur particulier qui offre du service en plus des performances. Le coût est d’environ 60€ HT / mois…pour le même service diront certains. Et bien non, pour ce prix, mon site web sous WordPress qui affichait des temps de chargement de 10s environ se charge à présent en moins de 1,5s avec une vraie infogérance en plus !

Résultats :

  • mon utilisation en tant que rédacteur et administrateur est plus agréable et plus fluide
  • votre utilisation en tant que lecteur est elle aussi plus agréable car les pages se chargent plus rapidement, et vous consultez plus de contenu sur mon site, plus de réalisations / articles…
  • Google qui prend en compte la vitesse de chargement me place plus généralement devant un concurrent qui propose un site web plus lent, donc j’ai potentiellement plus de visibilité et donc de clients

Je prend souvent cette image pour illustrer la situation : « Le web, c’est comme une course : si vous avez le meilleur pilote sans la voiture la plus rapide, vos concurrents plus rapides risquent gagner à tous les coûts ! »

Comprenez qu’avec les meilleures optimisations possibles sur votre boutique, un hébergement de qualité reste le plus grand levier pour disposer d’un site rapide à charger. Une question réside : comment bien choisir son hébergement ? Voici des éléments de réponse pour bien choisir :

  • les performances : quelles sont les performances affichées pour un PrestaShop sur telle ou telle offre ?
  • l’assistance technique ou infogérance : est-elle gratuite ou payante ? que comprend-elle ?
  • la sécurité : comment est-elle garantie ? les sauvegardes sont-elles comprises ?
  • le trafic et l’espace disque : ais-je une bande passante / espace disque illimité ?
  • le prix : il faut comparer mais pour moi ce n’est pas le critère à regarder en amont

Pour ma part, je travaille avec infomaniak, un hébergeur qui propose des offres performantes avec un vrai support, avec un vrai contact humain qui vous écoute et vous propose une solution sur-mesure.

 

Comment optimiser PrestaShop sur-mesure ?

Dans la partie précédente de l’article, vous venez de voir comment optimiser de manière générale PrestaShop, ce que vous pouvez faire. Il est également possible et c’est d’ailleurs un sujet que je traite assez souvent : l’optimisation sur-mesure des performances de PrestaShop.

Voici le déroulement du travail :

1. Audit du site web

Avant d’utiliser un outil, je consulte le site et je me place en tant que client cible de la boutique en question. J’étudie avec soin les différents éléments et stratégies mis en place pour vendre.

Ensuite, je consulte des outils pour faire ressortir les différents éléments techniques que l’on peut améliorer.

2. Recommandations concrètes

Je rédige un rapport complet et détaillé affichant les points positifs et les points clés sur lesquels il faut appuyer pour un gain maximum en temps de chargement. En effet, certaines optimisations auront un impact moindre sur la vitesse du site tandis que d’autres actions seront radicales sur un projet donné.

3. Mise en place des préconisations

On peut s’arrêter à l’étape 2, mais je peux aussi mettre en place les préconisations précédemment hiérarchisées. Tout le travail est chiffré en amont : tout est limpide sur le temps et le budget nécessaires pour la mise en place.

4. Bilan des optimisations

J’effectue un retour complet sur le travail effectué sur PrestaShop avec un comparatif avant / après généralement avec GTmetrix. Vous vendez de plus en plus !

Je suis déjà intervenu sur de nombreux projets pour améliorer les performances, voici des exemples :

 

Si vous n’avez pas le temps ou les compétences pour optimiser votre boutique PrestaShop, je peux m’en charger !

 

Conclusion

Vous pouvez améliorer les performances de PrestaShop via de nombreux leviers dont certains sont évoqués dans cet article. Ceci étant, il est conseillé d’optimiser au cas par cas pour éviter de dépenser du temps sur des points futiles sur certains sites web.

Cet article devrait en aider plus d’un, je l’espère, pour réduire le temps de chargement de PrestaShop. Je vous invite également à poster vos commentaires, questions, avis et autres astuces pour constituer une bonne base de travail ?

A bientôt !

 

 

Prestashop 1.7 : liste des variables smarty

Prestashop 1.7 inclut encore et toujours les variables Smarty, mais celles-ci ont subi beaucoup de changement, tant et à tel point que les thèmes ont tous dû s’adapter à cette nouvelle version.

Les variables globales que l’on connaissait pour Prestashop 1.6 ne sont donc majoritairement plus d’actualité, du moins en très grande majorité.

Voici donc une liste des variables Smarty de Prestashop 1.7, natives, que vous pouvez utiliser sur n’importe quelle version 1.7 désormais.

1/ Variables de boutique

2/ Variables des devises – monnaies

2/ Variables des langues

3/ Variables des clients

a/ les informations du client

b/ les adresses du client

4/ Variables de page

5/ Variables d’URL

a/ URL globales (répertoires, site et thème)

b/ URL de pages

 

Comme de bien entendu, un var_dump vous permet d’afficher ce que contient la variable, pour en utiliser les éléments.

Par exemple, afin d’afficher le contenu de la variable $page, il faudra saisir ceci : {$page|var_dump} dans un tpl de votre thème. Comme je dispose toujours d’un Prestashop 1.7 installé sur mon ordinateur, j’aurais tendance à mettre ce genre de var_dump au plus haut du site, directement dans le header, parfois même en effectuant une condition de manière à n’afficher le contenu de la variable que sur la page d’accueil. De cette manière je ne pollue pas les autres pages, et je peux en conséquent naviguer plus facilement tout en ayant sous les yeux les informations dont j’ai besoin.

 

Variables Prestashop 1.7 de boutique {$shop}

Vous pouvez donc faire un {$shop|var_dump} pour savoir ce que cette variable contient.  Beaucoup de ces paramètres sont renseignés dans l’onglet “Paramètres de la boutique” puis “Contact” et enfin l’onglet “Magasins”.

Ce qui nous ressort donc ceci :

{$shop.name} => nom de la boutique
{$shop.email} => email associé à la boutique
{$shop.logo} => logo de la boutique (qui se trouve lui dans “Apparence” puis “Thème et logo”)
{$shop.favicon} => le favicon de votre boutique (lui aussi au même endroit que les logos et le thème)
{$shop.address.address1} => champ d’adresse 1 de votre boutique
{$shop.address.address2} => champ d’adresse 2 de votre boutique
{$shop.address.postcode} => code postal de votre boutique
{$shop.address.city} => ville de votre boutique
{$shop.address.state} => province de votre boutique, ou Etat si celle-ci se trouve à l’étranger (comme aux USA)
{$shop..address.country} => le pays de votre boutique
{$shop.phone} => téléphone de votre boutique
{$shop.fax} => et enfin le fax de votre boutique

 

Variables Prestashop 1.7 de devise/monnaie {$currency}

{$currency.name} => le nom de la devise (euro, dollar, livre sterling…)
{$currency.iso_code} => le code ISO de la monnaie (comme EUR pour l’euro)
{$currency.sign} => le sigle de la devise affichée (donc € ou $)
{$currency.iso_code_num} => le numéro du code ISO de cette devise (comme 978 pur l’euro)

 

Variables Prestashop 1.7 de langue {$language}

{$language.name} => le nom de la langue (français par exemple)
{$language.iso_code} => code ISO de la langue en cours
{$language.language_code} => code langue de la langue en cours (comme fr, en, de, it…)
{$language.is_rtl} => la langue se lit-elle de droite à gauche (“rtl = right to left”)
{$language.format_lite} y {$language.format_full} => Formato de fecha simplicado y formato de fecha completo
{$language.id} => ID de la langue (en database)

 

Variables Prestashop 1.7 des clients {$customer}

Le client et ses informations

{$customer.lastname} => le nom de famille du client connecté
{$customer.firstname} => le prénom du client connecté
{$customer.email} => l’adresse email du client
{$customer.birthday} => date de naissance du client (mais celle-ci n’est plus obligatoire désormais)
{$customer.newsletter} => s’il est inscrit à la newsletter (booléen donc)
{$customer.newsletter_date_add} => date d’inscription à la newsletter
{$customer.ip_registration_newsletter} => adresse IP d’enregistrement à la newsletter
{$customer.optin} => oui ou non, le client a-t-il accepté de recevoir des offres de la part de vos partenaires ?
{$customer.date_add} => date de création du client
{$customer.date_upd} => dernière date de modification du client
{$customer.id} => identifiant du client (son ID en base de données)
{$customer.id_default_group} => identifiant du groupe client par défaut de ce client
{$customer.is_logged} => le client est-il connecté ?
{$customer.gender.name[$customer.gender.id]} => genre du client (M., Mme, etc)
{$customer.addresses[id_address].city} => Ciudad del cliente de la dirección ‘X’ que tiene asociado. (ID Dirección, porque un cliente teóricamente puede tener múltiples direcciones)

 

Le client et ses adresses

Bon à partir de là, partons du principe que le client dispose d’une adresse a minima. Chaque adresse dispose d’un identifiant, nous allons nous en servir pour récupérer des informations utiles. Remplacez donc id_address par l’identifiant de l’adresse client dont vous souhaitez avoir des informations.

{$customer.addresses[id_address].alias} => alias de l’adresse
{$customer.addresses[id_address].firstname} => prénom de la personne liée à l’adresse
{$customer.addresses[id_address].lastname} => nom de la personne liée à l’adresse
{$customer.addresses[id_address].company} => nom de l’entreprise liée à cette adresse
{$customer.addresses[id_address].address1} => premier champ d’adresse (le plus utilisé donc)
{$customer.addresses[id_address].address2} => second champ de l’adresse
{$customer.addresses[id_address].postcode} => code postal
{$customer.addresses[id_address].id_state} => identifiant du pays
{$customer.addresses[id_address].state} => Etat ou province
{$customer.addresses[id_address].state_iso} => code ISO de l’Etat ou de la province
{$customer.addresses[id_address].id_country} => ID du pays de l’adresse en cours
{$customer.addresses[id_address].country} => nom du pays
{$customer.addresses[id_address].country_iso} => code ISO de ce pays
{$customer.addresses[id_address].phone} => numéro de téléphone fixe
{$customer.addresses[id_address].phone_mobile} => numéro de téléphone portable
{$customer.addresses[id_address].dni} => DNI de l’adresse
{$customer.addresses[id_address].vat_number} => numéro de TVA intracommunautaire du client
{$customer.addresses[id_address].formatted} => adresse formatée du client

 

Variables Prestashop 1.7 de page {$page}

{$page.meta.title} => balise title de votre page (65 caractères maximum !)
{$page.meta.description} => balise meta description de votre page (pas plus de 300 caractères, ne descendez pas en-dessous de 90 !)
{$page.page_name} => nom de la page sur laquelle vous vous trouvez (comme index, product, category…)

 

Variables Prestashop 1.7 d’URL {$url}

Selon moi parmi les variables les plus utiles ! Elles vous permettront d’optimiser votre header voire d’auto-générer les balises title et meta description de manière à gagner du temps en référencement naturel sous Prestashop 1.7 (comme Prestashop 1.6 d’ailleurs, sauf que la syntaxe diffère).

URL globales (répertoires, site et thème)

{$urls.base_url} => il s’agit de l’URL de la page d’accueil de votre Prestashop
{$urls.current_url} => la page sur laquelle vous vous trouvez !
{$urls.shop_domain_url} => le nom de domaine de la boutique
{$urls.img_ps_url} => l’URL du répertoire /img de votre Prestashop
{$urls.img_cat_url} => l’URL des images des catégories, donc dans /img/c
{$urls.img_lang_url} => l’URL des images des langues du site
{$urls.img_prod_url} => l’URL des images des produits, donc /img/p
{$urls.img_manu_url} => l’URL des images des fabriquants (manufacturers), donc /img/m
{$urls.img_sup_url} => l’URL des images liées aux fournisseurs
{$urls.img_ship_url} => l’URL des images liées aux transporteurs
{$urls.img_store_url} =>
{$urls.img_url} => l’URL des images dans votre thème, donc /themes/votretheme/assets/img
{$urls.css_url} => l’URL des fichiers CSS de votre thème, donc /themes/votretheme/assets/css
{$urls.js_url} => l’URL des fichiers javascript de votre thème, donc /themes/votretheme/assets/js
{$urls.pic_url} => l’URL du répertoire /upload

 

URL des pages

{$urls.pages.address} => l’URL de la page “Mon adresse” côté client
{$urls.pages.addresses} => l’URL de la page “Mes adresses” côté client
{$urls.pages.authentication} => l’URL de la page de connexion
{$urls.pages.cart} => l’URL du panier
{$urls.pages.category} => l’URL de la catégorie
{$urls.pages.cms} => l’URL des CMS
{$urls.pages.contact} –> l’URL de la page de contact (le formulaire Prestashop si souvent spammé )
{$urls.pages.discount} => l’URL de la page des promotions
{$urls.pages.guest_tracking} => l’URL de suivi de commande pour les clients du groupe “Invités”
{$urls.pages.history} => l’URL de l’historique des commandes
{$urls.pages.identity} => l’URL de la page des informations personnelles côté client
{$urls.pages.index} => l’URL de la page, tout simplement !
{$urls.pages.my_account} => l’URL de la page “Mon Compte”
{$urls.pages.order_confirmation} => l’URL de la page de confirmation de commande
{$urls.pages.order_follow} => l’URL de la page de suivi de commande
{$urls.pages.order} => l’URL de la page de commande !
{$urls.pages.order_return} => l’URL de la page de retour de commande, utile notamment pour paramétrer des modules de paiement
{$urls.pages.order_slip} => l’URL à appeler pour le bon de commande
{$urls.pages.pagenotfound} => La 404
{$urls.pages.password} => l’URL de la page de récupération de mot de passe (“Mot de passe oublié ?”)
{$urls.pages.pdf_invoice} => l’URL des PDF des factures
{$urls.pages.pdf_order_return} => l’URL des PDF de retours de commandes
{$urls.pages.pdf_order_slip} => l’URL du PDF des bons de commandes
{$urls.pages.prices_drop} => l’URL de la page listant les produits aux prix réduits
{$urls.pages.product} => l’URL de la fiche produit
{$urls.pages.search} => l’URL de la page de recherche
{$urls.pages.sitemap} => votre page de plan de site, à ne pas confondre avec le sitemap
{$urls.pages.stores} => la page listant vos magasins
{$urls.pages.supplier} => la page listant vos fabricants
{$urls.pages.register} => l’URL de la page de création de compte
{$urls.pages.order_login} => URL de connexion depuis le tunnel de commande
{$urls.theme_assets} => URL vers le répertoire /assets de votre thème (contenant donc les CSS, le JS, les IMG, etc)
{$urls.actions.logout} => URL de déconnexion pour le client

 

Personnellement, je trouve que ces variables se sont grandement améliorées par rapport à Prestashop 1.6, et simplifient beaucoup la gestion des thèmes et des modules sur la version 1.7.

Servez-vous en à outrance ! Merci à TeamEver pour ses informations

 

 

error: Site protégé contre les copieurs !!