Prestashop

/Tag:Prestashop

Prestashop : Corriger les incohérences (doublons) de positions dans la base de données

Si vous constatez des bugs lorsque vous modifiez les positions d’éléments tels que les catégories, produits, transporteurs, etc., ces changements de positions  ne fonctionnant pas toujours ou de manière un peu aléatoire, il est probable que vous ayez des incohérences dans votre base de données : plusieurs éléments qui sont dans le même élément parent on la même valeur dans le champ « position ».

J’ai développé un petit script pour corriger ce type d’incohérences.

Dans mon cas, il corrige ce problème pour les positions, redéfinissant correctement la valeur du champ « position » pour les sous catégories qui ont une position en doublon dans une même catégorie parent.
Etant dans un contexte multiboutique, il travaille sur la table ps_category_shop et non pas sur la table ps_category.

Il peut servir de modèle pour corriger d’autres tables (catégories dans un contexte non multiboutique, produits, transporteurs, etc.)
Ci dessous le script 🙂

$db = Db::getInstance();
$res = $db->executeS('SELECT DISTINCT id_category, id_shop FROM '._DB_PREFIX_.'category_shop');
foreach ($res as $row) {
    $res2 = $db->executeS('SELECT cs.* FROM '._DB_PREFIX_.'category_shop cs
        INNER JOIN '._DB_PREFIX_.'category c ON c.id_category = cs.id_category
        WHERE cs.id_shop = '.$row['id_shop'].'
        AND c.id_parent='.$row['id_category'].'
        ORDER BY cs.position');
    $i=1;
    foreach ($res2 as $row2) {
        if ($i != $row2['position']) {
            echo 'Position modifiée : '.$i.' catégorie '.$row2['id_category'].' shop '.$row['id_shop'].'
';
             $db->execute('UPDATE '._DB_PREFIX_.'category_shop SET position='.$i.'
                 WHERE id_shop = '.$row['id_shop'].'
                 AND id_category = '.$row2['id_category']);
        }
        $i++;
    }
}
9 juin 2016|Categories: Blog|Tags: |0 Commentaires

Home click home

cliomeVente en ligne domotique et objets connectés.

  • Développement et intégration
  • CMS : Prestashop 1.6

http://www.cliome.com/

1 juin 2016|Categories: Références|Tags: , , , |Commentaires fermés sur Home click home

Boulevard doré

Vente en ligne de chaussettes, collants, etc.

  • Reprise du projet, migration prestashop 1.5 à 1.6 puis 1.6 à 1.7
  • Développements évolutifs
  • Maintenance, infogérance.
  • Particularités : multiboutique, multilingue, nombreux packs et déclinaisons
  • CMS : Prestashop 1.7
  • Vue JS

www.boulevard-dore.fr

8 juillet 2015|Categories: Références|Tags: , , , , |Commentaires fermés sur Boulevard doré

Papiers & compagnie

papiersetcieVente de produits papeterie et carterie.

  • Développements évolutifs
  • Maintenance, infogérance.
  • CMS : Prestashop

www.papiersetcie.com

17 décembre 2014|Categories: Références|Tags: , , |Commentaires fermés sur Papiers & compagnie

Artelittera

artelitteraVente de chapitres de livres.

  • Migration de prestashop 1.5 à 1.6
  • Développements évolutifs
  • Maintenance, infogérance.
  • Particularités : produits dématérialisés
  • CMS : Prestashop 1.6

www.artelittera.com

16 septembre 2014|Categories: Références|Tags: , , , |Commentaires fermés sur Artelittera

Prestashop 1.5.5.0, bug dans le cache

Prestashop est un outil formidable, mais quand il vient à présenter des problèmes de performances, il y a souvent de quoi s’arracher les cheveux.

J’ai récemment été confronté au problème, sur un prestashop 1.5.5.0, qui malgré tous les réglages dans l’admin optimisés (cache, compilation smarty, CCC, etc.) présentait des temps de réponse insatisfaisants.

Après avoir débuggé pendant quelques heures, j’ai pu trouver un bug dans les classes de prestashop, au niveau de la gestion du cache, qui faisait que les requêtes SQL mises en caches n’étaient jamais retrouvées, et étaient donc regénérées à chaque fois.

Le bug se situe au niveau de la gestion des clés du cache, dans le fichier classes/db/Db.php

Vous devez alors chercher la chaine

Cache::getInstance()->get(md5($sql))

Et la remplacer par la chaine

Cache::getInstance()->get(md5(_COOKIE_IV_.$sql))

Le gain de performances n’est pas miraculeux mais quitte à utiliser le système de cache, autant qu’il fonctionne à peu près correctement…

En espérant que cela puisse vous servir, et que Prestashop corrige rapidement dans les prochaines versions !

24 septembre 2013|Categories: Blog|Tags: |0 Commentaires

Croix rouge française – Délégation Départementale de Paris

crfSite e-commerce de la délégation départementale de Paris de la Croix Rouge française.

  • Développements évolutifs
  • Migration Prestashop 1.5 à 1.6, puis 1.6 à 1.7

Ma boutique Croix Rouge Paris

4 septembre 2013|Categories: Références|Tags: , , |Commentaires fermés sur Croix rouge française – Délégation Départementale de Paris