Jump to content

[Résolu]Comment rafraichir la page automatiquement après ajout au panier?


Recommended Posts

Bonjour, j'utilise un module de gestion des promotions qui marche bien mais qui ne rempli pas une fonctionnalité importante : la mise à jour des prix en temps réel. Est-il possible d'ajouter une fonction js qui rafraichirait la page une fois le bouton "ajouter au panier" cliqué? 

Edited by Julien13720 (see edit history)
Link to comment
Share on other sites

Bizarre, d'habitude ils sont plutôt sérieux...

Non, pas le js, c'est dans le php.

Il faut se hooker sur toutes les modifs produits.

 

Dans la méthode d'install 

			|| !$this->registerHook('addproduct')
			|| !$this->registerHook('updateproduct')
			|| !$this->registerHook('deleteproduct')

Ensuite créer les hooks d'action


	public function hookAddProduct($params)
	{
		$this->_clearCache('*');
	}

	public function hookUpdateProduct($params)
	{
		$this->_clearCache('*');
	}

	public function hookDeleteProduct($params)
	{
		$this->_clearCache('*');
	}

Et ajouter la fonction de nettoyage du cache si elle n'existe pas avec les bons noms de tpl utilisés par le module

	public function _clearCache($template, $cache_id = null, $compile_id = null)
	{
		parent::_clearCache('xxxxxxxxxxx.tpl');
		parent::_clearCache('xxxxxxxxxxx-home.tpl');
		parent::_clearCache('xxxxxxxxxxx-tab.tpl');
	}

 

Link to comment
Share on other sites

Il y a 13 heures, Mediacom87 a dit :

Ce changement n’aura aucun effet sur la prise en compte de l’ajout au panier.

Moi je répondais à ça 

 

Le 07/12/2021 à 9:20 AM, Julien13720 a dit :

Ou est-il possible de mettre à jour dynamiquement les prix? le développeur ne veut pas faire la modification de son module

Parce que la 1ère question, je n'ai toujours pas compris le use case^^

Link to comment
Share on other sites

Pour être précis, j'utilise le module idnovate Augmentation/Baisse de prix par groupe, catégorie... j'ai créé les règles, ça fonctionne dans le panier ou quand je réactualise la page catégorie. Si je ne réactualise pas la page, la promotion ne se met pas en "dynamique", le prix reste le même. J'ai contacté le développeur, il m'a répondu qu'il ne pouvait pas le faire... Donc je cherche un moyen de mettre à jour les prix dynamiquement quand une règle de promotion est remplie ou de créer un refresh automatique de la page après avoir ajouter un produit au panier. 

Link to comment
Share on other sites

Il faut bien comprendre comment fonctionne un serveur web.

Une fois la page générée et envoyé au client dans son navigateur, celle-ci n'est plus reliée à votre serveur.

Si vous voulez que la page affichée soit modifiée au moment même où vous changeriez des prix il faudrait envoyer toutes les secondes une requête ajax depuis le navigateur du client qui irait interroger un fichier dans lequel serait stockées les dernières modifs de prix suivant les id produits ou catégorie. Si le résultat concernerait la page affichée il faudrait alors envoyer un refresh à la page concernée.

Si je comprends votre problème c'est au moment où vous créez les règles en fait, vous voudriez que tous les clients qui ont une page ouverte voient la modification, c'est cela ? Parce que ceux qui arrivent juste après la verront forcément.

Link to comment
Share on other sites

3 hours ago, Julien13720 said:

Si je ne réactualise pas la page, la promotion ne se met pas en "dynamique", le prix reste le même. J'ai contacté le développeur, il m'a répondu qu'il ne pouvait pas le faire... Donc je cherche un moyen de mettre à jour les prix dynamiquement quand une règle de promotion est remplie ou de créer un refresh automatique de la page après avoir ajouter un produit au panier. 

A mon avis, tu n'as pas compris le fonctionnement du cache de navigateur. ( Je te laisse faire une recherche...)
Quand une page se charge sur ton ordinateur, elle va chercher les infos à l'instant T sur le serveur.

Si entre temps, tu modifie le prix, celui qui est affiché chez toi sur ton navigateur ne va pas se mettre à jour automatiquement tant que tu ne recharges pas la page. Ce fonctionnement est normal et souhaitable pour ne pas surconsommer inutilement des données, donc de l'énergie.
Sinon, ce n'est plus 20%(sources à vérifier?) des ressources énergétiques mondiale que l'internet va consommer mais 3 fois plus.

Mais quand tu changes un prix ou une info, il y a une mise à jour de l'info qui se fait. C'est obligé.
Quel intérêt de mettre à jour des infos sans rechargement de page ?

Sinon, ne pas confondre avec l'AJAX qui met à jour les affichages de page sans les recharger.
Mais çà c'est autrechose. Mieux vaut bien comprendre le système des caches avant de regarder cette option.

Donc ton module est bon, et c'est normal qu'il n'est pas donné suite.

 

Edited by Bertrand-Kaer (see edit history)
Link to comment
Share on other sites

3 hours ago, Eolia said:

Si vous voulez que la page affichée soit modifiée au moment même où vous changeriez des prix il faudrait envoyer toutes les secondes une requête ajax depuis le navigateur du client qui irait interroger un fichier dans lequel serait stockées les dernières modifs de prix suivant les id produits ou catégorie. Si le résultat concernerait la page affichée il faudrait alors envoyer un refresh à la page concernée.

Si je comprends votre problème c'est au moment où vous créez les règles en fait, vous voudriez que tous les clients qui ont une page ouverte voient la modification, c'est cela ? Parce que ceux qui arrivent juste après la verront forcément.

Pas du tout, j'ai posté une vidéo, c'est plus simple https://watch.screencastify.com/v/VoyJts54n5kLqsItSrZI

Link to comment
Share on other sites

2 hours ago, Bertrand-Kaer said:

A mon avis, tu n'as pas compris le fonctionnement du cache de navigateur. ( Je te laisse faire une recherche...)
Quand une page se charge sur ton ordinateur, elle va chercher les infos à l'instant T sur le serveur.

A mon avis je n'arrive pas à me faire comprendre hihi

Link to comment
Share on other sites

14 minutes ago, Julien13720 said:

A mon avis je n'arrive pas à me faire comprendre hihi

Avec la vidéo c'est plus explicite... typiquement c'est de l'AJAX (mise à jour sans rechargement de page)
T'as un lien vers le module ? Un lien avec une demo ?

Link to comment
Share on other sites

Ce module n'a aucun rapport avec ce que tu veux faire. Il permet de modifier les prix en masse... C'est tout.

Prestashop le permet nativement si je ne m'abuse.
Je n'ai plus la souvenance de la manière de faire mais tu crées des conditions et selon les quantités, les prix changent automatiquement.
Pour les pages produits en tout cas, pas dans les pages catalog (dans ton exemple vidéo) où là c'est particulier.

PS: Bravo aux développeurs pour la démo claire (même si le site pique un peu les yeux 🙂 )

Edited by Bertrand-Kaer (see edit history)
Link to comment
Share on other sites

Pour compléter ce que je disais auparavant, les changements de prix selon les quantités existent nativement dans PRESTASHOP.
Inutile de charger un module "externe" pour cela.
C'est une règle que tu crée dans : CATALOGUE > REDUCTIONS > REGLES DE PRIX CATALOGUE

Tu régles tes paramètres avec les conditions,
puis comme tu le montres dans ta vidéo, les prix se changent sans rechargement de page (en AJAX donc) selon les quantités choisies
Je viens de tester. Ca marche très bien.



 

Link to comment
Share on other sites

On 12/8/2021 at 9:26 AM, Julien13720 said:

Bonjour, je vous ai acheté un module direct sur votre site où j'ai ouvert un ticket

Ok, lorsque vous avez parlé des promotions, j'ai pensé que vous faisiez référence à ce module https://store.idnovate.com/fr/promotions-et-marketing/1385-promotions-et-reductions-3x2-rabais-offres-packs.html et je ne me souvenais pas d'avoir fait un commentaire sur ce sujet 👍

 

Après avoir examiné la question, je pense que @Eolia et @Bertrand-Kaer a parfaitement répondu à votre problème (merci). Il serait nécessaire de consulter constamment le serveur pour vérifier les prix des produits. Cela entraînerait une charge importante sur la page:

 

Je comprends que vous devez recharger la page lorsqu'un produit a été ajouté au panier. Et cette solution pourrait vous convenir :

14 hours ago, Eolia said:

Ben dans ce cas, modifiez le js du module blockcart à la fonction updateCart:

updateCart : function(jsonData) {
    location.reload();

    ..... // code existant
}

Mais ca va être bof bof au niveau confort utilisateur...

Mais attention, dans ce cas, vous ne verrez pas la popup avec le produit ajouté au panier, par exemple.

 

A propos de la réponse que nous vous avons donnée :

On 12/7/2021 at 7:09 PM, Julien13720 said:

J'imagine bien... mais le développeur ne veut rien entendre... il m'a répondu "c'est pas ds nos intentions de développer cette option" 😔

Nous essayons toujours de faire de notre mieux pour que nos clients soient satisfaits à 100 %, mais vous demandiez une nouvelle fonctionnalité qui ne nous semblait pas appropriée en raison des implications techniques qu'elle pourrait avoir. 🙂

Link to comment
Share on other sites

1 hour ago, Bertrand-Kaer said:

Pour compléter ce que je disais auparavant, les changements de prix selon les quantités existent nativement dans PRESTASHOP.
Inutile de charger un module "externe" pour cela.
C'est une règle que tu crée dans : CATALOGUE > REDUCTIONS > REGLES DE PRIX CATALOGUE

Tu régles tes paramètres avec les conditions,
puis comme tu le montres dans ta vidéo, les prix se changent sans rechargement de page (en AJAX donc) selon les quantités choisies
Je viens de tester. Ca marche très bien.

Je suppose que vous voulez parler de la page des produits, et non de la page des catégories, qui est ce que vous montrez dans la vidéo. Sur la page de la catégorie, les prix ne sont pas mis à jour de manière dynamique.

Il est possible que le client souhaite également appliquer les prix spécifiques s'il achète X unités de plus d'un produit, alors que PS ne permet qu'un seul produit.

Link to comment
Share on other sites

17 minutes ago, idnovate.com said:

Je suppose que vous voulez parler de la page des produits, et non de la page des catégories, qui est ce que vous montrez dans la vidéo. Sur la page de la catégorie, les prix ne sont pas mis à jour de manière dynamique.

 

Je parle des régles de réduction natif à Prestashop dans le tableau de bord (à l'adresse que j'ai déjà donnée).
Ex: Prix pour 3 prods, prix pour 10 prods... etc... selon des critères divers (catégorie de produit par exemple)
Dans ce cas, sur une page produit (en FRONT), les prix s'affichent en fonction de la quantité en AJAX sans rechargement de la page.

Rien à voir avec votre module, je pense. Qui permet dans le back-office (je précise car il y a confusion) de changer les prix en masse.

 

Link to comment
Share on other sites

17 minutes ago, Bertrand-Kaer said:

Qui permet dans le back-office (je précise car il y a confusion) de changer les prix en masse.

Pas exactement. Le module vous permet de modifier massivement les prix à partir du backoffice, mais comme s'il s'agissait de prix spécifiques.

 

18 minutes ago, Bertrand-Kaer said:

Ex: Prix pour 3 prods, prix pour 10 prods... etc... selon des critères divers (catégorie de produit par exemple)

Mais le module vous permet d'acheter 3 unités d'un produit et 4 unités d'un autre produit de la même catégorie, et le module vous permet de configurer un prix spécifique à partir de 5 unités de produits d'une catégorie, par exemple. PS ne permet pas cette configuration.

 

19 minutes ago, Bertrand-Kaer said:

Dans ce cas, sur une page produit (en FRONT), les prix s'affichent en fonction de la quantité en AJAX sans rechargement de la page.

Sur le front-end mais sur la page du produit, pas sur la page de la catégorie. La page de la catégorie n'est pas mise à jour dynamiquement.

Link to comment
Share on other sites

On 12/8/2021 at 7:15 PM, Bertrand-Kaer said:

Ce module n'a aucun rapport avec ce que tu veux faire. Il permet de modifier les prix en masse... C'est tout.

Prestashop le permet nativement si je ne m'abuse.
Je n'ai plus la souvenance de la manière de faire mais tu crées des conditions et selon les quantités, les prix changent automatiquement.
Pour les pages produits en tout cas, pas dans les pages catalog (dans ton exemple vidéo) où là c'est particulier.

PS: Bravo aux développeurs pour la démo claire (même si le site pique un peu les yeux 🙂 )

Merci de la réponse mais prestashop ne gère pas les déclinaisons pour les prix castalogues

Link to comment
Share on other sites

On 12/9/2021 at 10:25 AM, idnovate.com said:

Nous essayons toujours de faire de notre mieux pour que nos clients soient satisfaits à 100 %, mais vous demandiez une nouvelle fonctionnalité qui ne nous semblait pas appropriée en raison des implications techniques qu'elle pourrait avoir. 🙂

Je ne remet pas en cause votre professionnalisme, j'utilise plusieurs de vos produits et j'en suis ravi. C'est juste cette fonctionnalité qui me manquait 

  • Like 1
Link to comment
Share on other sites

1 minute ago, Eolia said:

Hein????

image.thumb.png.89710e6782edfc49d3e6c71bb6992dd1.png

par rapport à ce que j'ai besoin ce n'est pas complet. C'est des réductions par paliers avec des pourcentages, et d'autres fonctionnalités que le modules gère bien.

Je souhaite juste que les prix se mettent à jour... 😉 je vais essayer votre méthode reload. Merci en tout cas. 

Link to comment
Share on other sites

40 minutes ago, Julien13720 said:

par rapport à ce que j'ai besoin ce n'est pas complet. C'est des réductions par paliers avec des pourcentages, et d'autres fonctionnalités que le modules gère bien.

Je souhaite juste que les prix se mettent à jour... 😉 je vais essayer votre méthode reload. Merci en tout cas. 

Une autre option consiste à désactiver le panier AJAX. La page devrait se recharger automatiquement.

Link to comment
Share on other sites

  • razaro changed the title to Comment rafraichir la page automatiquement?
  • 4 weeks later...
  • Julien13720 changed the title to [Résolu]Comment rafraichir la page automatiquement après ajout au panier?

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...