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

Halte aux spams sur Prestashop

Halte aux spams sur Prestashop

Hey, j’ai une question pour toi ! Est-ce que tu aimes recevoir des spams en série sur  Prestashop ? Oui c’est usant et pas toujours simple de faire stopper le vilain qui fait ça… On va y remédier…

Avant tout, vous devez créer une overide que l’on va placer dans overide/controllers/front/ContactController.php

Et on y ajoute ceci :

Remarque :

A la ligne vous pouvez ajouter ou modifier vos domaines selon les spams reçu, part exemple : gmail, hotmail, etc..

Connectez vous via ftp et Upload ce fichier…….

Ne vous reste plus qu’à apprécier le silence des spam….

 

Cela vous a aidé? faites le nous savoir ci-dessous !!

 

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.

 

Rendre toutes les règles de panier non cumulables

Bien gérer des règles de paniers est essentiel pour une boutique e-commerce. PrestaShop le fait grâce aux règles de paniers. Cependant, quand on possède un catalogue important avec de multiples règles, on peut décider de n’en rendre aucune cumulable. Et par défaut, ça coince…

La solution e-commerce PrestaShop offre la possibilité de déterminer des règles de panier. Cette fonctionnalité permet entre autres de créer des codes de réduction qui offrent des avantages aux clients ou encore l’ajout de produits cadeaux automatiques dans le panier. Très largement utilisée par les e-commerçants, PrestaShop propose également de rendre cumulables ou non, des règles de panier. Puis-je utiliser le code promo NEW16 et profiter du produit cadeau ? Autre point intéressant, il est également possible de prioriser les règles. Ainsi, celle de priorité 1 sera exécutée avant celle de priorité 2. Cependant, lorsque l’on crée une nouvelle règle de panier, cette dernière est par défaut cumulable avec l’ensemble des autres règles de paniers définies précédemment. Ce fonctionnement n’est pas paramétrable et peut poser certains problèmes à des e-commerçants possédant des gros stocks de règles et souhaitant contrôler le cumul des règles entre elles.

Si vous souhaitez pour votre boutique, que les règles de panier ne soient plus cumulables, vous pouvez utiliser la solution ci-dessous. Attention, celle-ci requiert des compétences techniques et l’accès aux fichiers sources de votre boutique.

Il faut effectuer deux modifications : dans la classe CartRule.php et dans le fichier du thème discount.tpl.

Dans le fichier CartRule.php, vous devez commenter ou supprimer l’ensemble de la condition suivante :

Puis ajouter la portion de code suivante à la suite :

Dans le fichier discount.tpl de votre thème actif, vous devez corriger les lignes suivantes :

par

Au final, lorsqu’un client ajoutera un deuxième code promotion à son panier, cela créera l’erreur suivante : Ce bon de réduction n’est pas cumulable avec un autre bon de réduction déjà présent dans votre panier. Si le client veut changer de code promotion, il faudra alors qu’il commence par supprimer celui déjà ajouté.

En ce qui concerne les contrôleurs et les classes propres de PrestaShop, il est conseillé de passer par un override. Si vous souhaitez utiliser un override pour votre boutique, n’oubliez pas de vérifier dans les Paramètres avancés (puis Performances) de votre boutique que vous autorisez ces surcharges. Vous devez avoir la même configuration que ci-dessous.

Vous pouvez également télécharger le fichier modifié CartRule.php avec la solution décrite ci-dessus. Il est à placer dans le dossier /override/classes/. Pour éviter toute source d’erreurs pensez à vider votre cache.

Cette solution a été testée et fonctionne avec la version 1.6.1.0 et supérieures de PrestaShop.

A bientôt pour de nouvelles astuces !

 

 

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