- Posts: 511
- Thank you received: 37
Tri par prix
3 years 9 months ago #347534
by Minie
Tri par prix was created by Minie
Please Log in or Create an account to join the conversation.
3 years 9 months ago #347543
by nicolas
Replied by nicolas on topic Tri par prix
Bonjour,
En effet, les réductions ne sont pas prises en compte.
Je n'ai malheureusement pas de solution.
Les réductions sont calculées dynamiquement en PHP une fois les prix chargés. Or, le filtrage se fait en MySQL durant le chargement des produits à afficher sur le listing, et donc avant le chargement des réductions, des prix et les calculs sur les prix.
Changer l'ordre n'est pas possible. Car il faudrait alors charger les prix et les réductions de tous les produits de toutes les pages du listing pour calculer le prix avec réduction de tous les produits pour pouvoir ensuite faire le filtrage. Or charger autant de données causerait des soucis de performance.
La solution, ça serait de faire une table de cache des prix finaux des produits. Le problème c'est que ce n'est pas simple, car les prix peuvent variés en fonction du groupe de l'utilisateur, de la date, etc. Il y a pleins de critères qui peuvent faire qu'un utilisateur verra un autre prix qu'un autre utilisateur, et donc il faudrait prendre en compte tout cela dans la table de cache des prix finaux, et il faudrait ensuite garder la synchronisation de cette table pour que les prix finaux soient recalculés à chaque fois qu'un prix change, un produit change, une catégorie change, une réduction change, etc. Bref, cela complique beaucoup les choses.
Ce serait un développement très important, avec des soucis sur la synchro et je ne vois pas de solution à vous fournir pour faire cela.
En effet, les réductions ne sont pas prises en compte.
Je n'ai malheureusement pas de solution.
Les réductions sont calculées dynamiquement en PHP une fois les prix chargés. Or, le filtrage se fait en MySQL durant le chargement des produits à afficher sur le listing, et donc avant le chargement des réductions, des prix et les calculs sur les prix.
Changer l'ordre n'est pas possible. Car il faudrait alors charger les prix et les réductions de tous les produits de toutes les pages du listing pour calculer le prix avec réduction de tous les produits pour pouvoir ensuite faire le filtrage. Or charger autant de données causerait des soucis de performance.
La solution, ça serait de faire une table de cache des prix finaux des produits. Le problème c'est que ce n'est pas simple, car les prix peuvent variés en fonction du groupe de l'utilisateur, de la date, etc. Il y a pleins de critères qui peuvent faire qu'un utilisateur verra un autre prix qu'un autre utilisateur, et donc il faudrait prendre en compte tout cela dans la table de cache des prix finaux, et il faudrait ensuite garder la synchronisation de cette table pour que les prix finaux soient recalculés à chaque fois qu'un prix change, un produit change, une catégorie change, une réduction change, etc. Bref, cela complique beaucoup les choses.
Ce serait un développement très important, avec des soucis sur la synchro et je ne vois pas de solution à vous fournir pour faire cela.
Please Log in or Create an account to join the conversation.
3 years 9 months ago #347610
by Minie
Replied by Minie on topic Tri par prix
Bonjour,
je suis désolée d'apprendre ca
Merci quand même pour les idées de pistes, je vais faire quelque chose dans le genre (en plus simple vu que nous n'avons pas à couvrir tous les cas de figures comme vous)
Joyeuses fêtes !
je suis désolée d'apprendre ca
Merci quand même pour les idées de pistes, je vais faire quelque chose dans le genre (en plus simple vu que nous n'avons pas à couvrir tous les cas de figures comme vous)
Joyeuses fêtes !
Please Log in or Create an account to join the conversation.
3 years 9 months ago - 3 years 9 months ago #347611
by nicolas
Replied by nicolas on topic Tri par prix
Bonjour,
Oui, si c'est quelque chose de plus simple, alors faire une table de cache simplifiée qui gère uniquement les cas dont vous avez besoin sera plus facile à mettre en place. Vous pourrez utiliser l'API product / discount pour mettre à jour la table lorsque quelque chose est modifié, et onBeforeProductListingLoad ( www.hikashop.com/support/documentation/6...reProductListingLoad ) pour changer le tri de la requête de chargement des produits pour prendre en compte cette table de cache au lieu du tri normal si nécessaire.
Il y a quand même pas mal de développement, mais ne pas avoir à gérer tous les cas possibles simplifiera grandement la tâche.
Joyeuses fêtes également !
Oui, si c'est quelque chose de plus simple, alors faire une table de cache simplifiée qui gère uniquement les cas dont vous avez besoin sera plus facile à mettre en place. Vous pourrez utiliser l'API product / discount pour mettre à jour la table lorsque quelque chose est modifié, et onBeforeProductListingLoad ( www.hikashop.com/support/documentation/6...reProductListingLoad ) pour changer le tri de la requête de chargement des produits pour prendre en compte cette table de cache au lieu du tri normal si nécessaire.
Il y a quand même pas mal de développement, mais ne pas avoir à gérer tous les cas possibles simplifiera grandement la tâche.
Joyeuses fêtes également !
Last edit: 3 years 9 months ago by nicolas.
Please Log in or Create an account to join the conversation.
3 years 9 months ago #347615
by Minie
Replied by Minie on topic Tri par prix
Bonjour,
merci beaucoup pour toutes ces infos
merci beaucoup pour toutes ces infos
Please Log in or Create an account to join the conversation.
Time to create page: 0.249 seconds