Jump to content

3 fiches pack, et seule l'une d'elle affiche les quantités des produits packés


Fabrice

Recommended Posts

oui, je sais c'est dingue. ;-)

d'autant que j'ai checké toutes les tables.

la seule table qui à-priori est appelée par la fonction

                    {$packItem.pack_quantity} x getProductLink($packItem.id_product, $packItem.link_rewrite, $packItem.category)}">{$packItem.name|escape:'htmlall':'UTF-8'}



est la table pack

elle est correctement renseignée.
tout y est.
mais malgré tout, les quantités qui devraient être présentes ne sont pas affichées

et ce n'est pas un problème de thème. ça le fait aussi avec le thème PS par défaut.

une idée ?

j'ai essayé de dupliquer la page pack, mais la duplication échoue. en partie. mais même résultat. pas d'affichage des quantités.

une bonne idée serait la bienvenue.

vouc pouvez voir le phénomène ici :

là c'est ok mais pas la

et copie écran de la table PACK en pièce jointe. alors ? c'est pas un problème à la con ça ?!

d'ailleurs la fonction packItem.pack_quantity, il va chercher l'info comment ? je ne vois pas d'item packitem dans la table - ni dans product. ça passe par le PHP ? ça pourrait venir de là ?

10444_0ER1NtzL3hAlUcLPpn4T_t

Link to comment
Share on other sites

Ouep c'est bizarre, j'ai fait des essais mais sans succès.... enfin sans problème...

Si t'as des pistes (comment ces packs ont été créés, stock des produits qu'il contiennent, etc.).

Tu devrais poster dans le BT. Les devs auront peut-être une idée.

Link to comment
Share on other sites

  • 9 months later...
  • 1 month later...

Version 1.3.1 toujours et même cas de figure...

Je me suis cassé les dents quelques temps dessus... mais j'ai réglé le problème (bien que la solution "désoptimise" un peu le site).



Dans la fonction getProductProperties() du fichier Product.php il y a ces 2 lignes :




if (array_key_exists($cacheKey, self::$producPropertiesCache))

     return self::$producPropertiesCache[$cacheKey];





Ces lignes permettent d'optimiser en mettant en cache certaines informations et les retourne sans faire le travail de préparation des attributs en entier une deuxième fois. Le problème survient lorsqu'un des produits du pack est appelé 2x. La première fois il n'est pas traité pour le pack (donc la quantité n'est pas prise en compte * ) , la 2e fois, le produit qui est préparé dans le caché est retourné sans la quantité.
* La quantité n'est pas prise en compte car la variable $row reçoit un produit sans l'attribut pack_quantity et est cachée sans lui.

Si on commente ces lignes, ca marche :) mais on n'utilise plus de cache :(


Plus de détails concernant le double appel d'un produit (et donc sa mise en cache) :

* Tout d'abord c'est cette fonction qui est appelée : Category.php > getProducts(...) ( par qui ?? un module ? )
* A la dernière ligne de cette fonction on trouve : return Product::getProductsProperties($id_lang, $result);. Elle appelle donc Products.php > getProductsProperties() (products au pluriel svp)
* Cette dernière appelle notre fonction "bugué" qui gère le cache : Products.php > getProductProperties()

Link to comment
Share on other sites

Salut,

Je n'arrive pas à reproduire ce problème sur la version SVN ainsi que sur la démo en ligne.

Atch, peux-tu me donner plus d'informations concernant la reproduction de ce bug ?

En effet, j'ai créé un pack de produit avec 4 iPod Nano et 2 paires d'écouteurs, et sur la fiche produit je n'ai aucun problème.

Merci,

Link to comment
Share on other sites

Bon un indice en passant :

Ce n'est pas si on a 2x le même produit dans le pack que le bug se produit, c'est si un autre module en vient à appeler la méthode Product.php > getProductProperties(...) en passant un objet sans l'attribut $row['pack_quantity']. C'est là qu'il est mis en cache sans cet attribut et retourné à la class Pack quand celle ci appelle cette même méthode.

Je ne peux pas garantir la reproductibilité avec cette astuce, mais essaie p.ex de rajouter l'un de tes deux produits dans le panier d'achat (celui ci devrait appeler Product::getProductProperties(...) avant que la classe Pack ne le fasse).

Dans mon cas ce n'étais pas le panier qui appelait cette fonction, ca devait être un autre module (que je n'ai pas encore pris le temps d'identifier)

Link to comment
Share on other sites

  • 3 weeks later...
Salut,

Je n'arrive pas à reproduire ce problème sur la version SVN ainsi que sur la démo en ligne.

Atch, peux-tu me donner plus d'informations concernant la reproduction de ce bug ?

En effet, j'ai créé un pack de produit avec 4 iPod Nano et 2 paires d'écouteurs, et sur la fiche produit je n'ai aucun problème.

Merci,


Salut Alain,

Je viens de faire un essai sur une boutique démo en local 1.3.11.

c'est le premier pack et le premier affichage (voir photo)

Dans le tpl j'ai pourtant :
{if $packItems|@count > 0}
{l s='Pack content'}
               {foreach from=$packItems item=packItem}

                       {$packItem.pack_quantity} x getProductLink($packItem.id_product, $packItem.link_rewrite, $packItem.category)}">{$packItem.name|escape:'htmlall':'UTF-8'}

{$packItem.description_short}

               {/foreach}
           {/if}



les qtés sont 1, 2 et 4

Mais rien ne s'affiche :(

Si tu veux je peux le tester sur une de mes démo en ligne pour voir...

EDIT : je viens de faire un test en ligne, meme bug :
http://demo.atchworks.com/fashionwhite/product.php?id_product=22

Alain, si tu as besoin des acces, contacte moi en MP ;)

V++

Atch

28557_Nevru6uS1gaIO74D8DxM_t

Link to comment
Share on other sites

  • 4 months later...
  • 2 weeks later...
  • 2 months later...

Bonjour tout le monde.

Le bug semble toujours présent dans la 1.4.
Il me semble pas que quelqu'un l'ai notifié ici.

Un espoir quant à la résolution de ce problème ?

Je débute. J'ai tenté d'ouvrir le product.php sur la 1.4.
et il fait référence au controller ProductController
mais...

Ou devrais-je selon vous virer les lignes dont vous parlez plus haut ?

Merci.

Link to comment
Share on other sites

  • 4 weeks later...
  • 3 months later...
  • 3 months later...
  • 3 months later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...