Table des URL SEF de sh404SEF submergée par des URLs Hikashop

  • Posts: 468
  • Thank you received: 30
  • Hikashop Business
5 years 9 months ago #293826

-- HikaShop version -- : 3.4.0
-- Joomla version -- : 3.8.6
-- PHP version -- : 7.1.17

Bonjour J'utilise sh404SEF, pour pouvoir personnaliser des URLs SEF, contrôler des paramètres SEO ou établir des redirections après analyse des erreurs 404.

Sur une petite boutique (une trentaine de produits) tournant avec des versions récentes des applications (Hikashop, Joomla, sh404SEF, PHP), je rencontre le problème suivant : la table des URLs SEF de sh404SEF est complètement submergée par des URLs d'Hikashop ; elle devient très lourde et il arrive un moment où je ne peux même plus afficher le lsiting des URLs dans sh404SEF et je dois purger la table via phpMyAdmin. Je me suis retrouvé avec plusieurs dizaines de milliers d'URLs similaires (plus de 90.000) !

Le problème ne vient pas des URLs des catégories ou des produits, mais vient essentiellement d'URLs de ce type : "type=cart&return_url=…" qui sont apparemment créées par le module de panier.

NON-SEF
index.php?option=com_hikashop&Itemid=400&ctrl=product&lang=fr&module_id=330&module_type=cart&return_url=aHR0cHM6Ly93d3cubGVzeWV1eGZlcnRpbGVzLmZyL2JvdXRpcXVlL2NhdGVnb3JpZS9zdGFnZXMtZGUtZGVzc2lu&task=cart&tmpl=component

SEF (sh404SEF)
boutique/product/cart/module_id-330/module_type-cart/return_url-aHR0cHM6Ly93d3cubGVzeWV1eGZlcnRpbGVzLmZyL2JvdXRpcXVlL2NhdGVnb3JpZS9zdGFnZXMtZGUtZGVzc2lu/tmpl-component

J'ai soumis le problème à l'éditeur de sh404SEF et j'attends sa réponse, mais je cherche aussi d'autres avis, venant par exemple de webmasters qui recontrent peut-être le même problème.

Est-il possible de ne pas réécrire ces URLs "return_url" ? Ou bien est-ce qu'un paramètre dans la configuration d'Hikashop (générale, module) pourrait permettre de ne plus les générer ?

NB : j'ai une solution temporaire, en excluant totalement Hikashop de la réécriture par sh404SEF, mais elle est insatisfaisante pour l'instant, car je perds au passage une fonctionnalité intéressante de sh404SEF, à savoir l'affichage d'une page de suggestions lorsque se produit une erreur 404.

Last edit: 5 years 9 months ago by lesyeux. Reason: Résolu

Please Log in or Create an account to join the conversation.

  • Posts: 25994
  • Thank you received: 4004
  • MODERATOR
5 years 9 months ago #293838

Bonjour,

Solution 1 : configuration de SH404SEF pour ne pas s'occuper de ces URLs spécifiquement.

Solution 2 : Utiliser un override de vue pour "product / cart" et passer le "return_url" en tant que paramètre POST.

o.xRequest("<?php echo hikashop_completeLink('product&task=cart&module_id='.$module_id . '&module_type='.$this->cart_type, true, false, true); ?>", {update: el, mode:'POST', data:'return_url=<?php echo urlencode(base64_encode(hikashop_currentURL('return_url'))); ?>'}, function(xhr){

Cordialement,


Jerome - Obsidev.com
HikaMarket & HikaSerial developer / HikaShop core dev team.

Also helping the HikaShop support team when having some time or couldn't sleep.
By the way, do not send me private message, use the "contact us" form instead.
The following user(s) said Thank You: lesyeux

Please Log in or Create an account to join the conversation.

  • Posts: 468
  • Thank you received: 30
  • Hikashop Business
5 years 9 months ago #293863

Bonjour,

Avec le code fourni, j'ai réglé une partie du problème. Mais j'ai encore des URLs excédentaires :

NON-SEF
index.php?option=com_hikashop&cart_id=4420&cart_product_id=7061&ctrl=product&lang=fr&quantity=0&return_url=aHR0cHM6Ly93d3cubGVzeWV1eGZlcnRpbGVzLmZyL2JvdXRpcXVlL3Byb2R1aXQvc3VyLWxlcy1yaXZlcy1kLXVuLXZpc2FnZS10aXJhZ2UtZC1hcnQtbm9pci1ldC1ibGFuYw%3D%3D&task=updatecart

SEF
boutique/product/updatecart/cart_id-4420/cart_product_id-7061/quantity-0/return_url-aHR0cHM6Ly93d3cubGVzeWV1eGZlcnRpbGVzLmZyL2JvdXRpcXVlL3Byb2R1aXQvc3VyLWxlcy1yaXZlcy1kLXVuLXZpc2FnZS10aXJhZ2UtZC1hcnQtbm9pci1ldC1ibGFuYw

Est-ce qu'il faut aussi modifier "checkout/tmpl/cart.php" ?

Par ailleurs, si je vide le panier, la page prévue pour s'afficher lorsque le panier est vide (configuration générale) ne s'affiche plus : on reste sur la page du checkout et la quantité semble ne pas avoir été actualisée (mais en fait, elle l'est, car le module de mini-panier affichera bien "panier vide" si on revient en page d'accueil). Peut-être que je peux simplement afficher un message, genre pop-up ?

Please Log in or Create an account to join the conversation.

  • Posts: 468
  • Thank you received: 30
  • Hikashop Business
5 years 9 months ago #293864

L'absence de retour vers la page "panier vide" ne vient pas de l'override. C'est un autre problème (peut-être le système de cache du serveur, je vais vérifier ça et créer un autre sujet si le problème persiste)

Please Log in or Create an account to join the conversation.

  • Posts: 81361
  • Thank you received: 13037
  • MODERATOR
5 years 9 months ago #293872

Pour les autres URLs, c'est toujours dans la même vue mais cela vient de cette ligne:

$delete_url = hikashop_completeLink('product&task=updatecart&cart_id='.(int)$this->element->cart_id.'&cart_product_id='.(int)$product->cart_product_id.'&quantity=0&return_url='.urlencode(base64_encode(urldecode($this->params->get('url')))));
Vous pouvez la changer en:
$delete_url = hikashop_completeLink('product&task=updatecart&cart_id='.(int)$this->element->cart_id.'&cart_product_id='.(int)$product->cart_product_id.'&quantity=0').?return_url='.urlencode(base64_encode(urldecode($this->params->get('url'))));

Please Log in or Create an account to join the conversation.

  • Posts: 468
  • Thank you received: 30
  • Hikashop Business
5 years 9 months ago #293901

Avec ce code, j'ai une erreur 500

Erreur : 500 - ParseError: syntax error, unexpected '?' in /templates/rt_metropolis/html/joomla/3.8/com_hikashop/product/cart.php:526

Please Log in or Create an account to join the conversation.

  • Posts: 25994
  • Thank you received: 4004
  • MODERATOR
5 years 9 months ago #293902

Bonjour,

Il y a une légère typo dans le message de Nicolas

$delete_url = hikashop_completeLink('product&task=updatecart&cart_id='.(int)$this->element->cart_id.'&cart_product_id='.(int)$product->cart_product_id.'&quantity=0').'?return_url='.urlencode(base64_encode(urldecode($this->params->get('url'))));


Jerome - Obsidev.com
HikaMarket & HikaSerial developer / HikaShop core dev team.

Also helping the HikaShop support team when having some time or couldn't sleep.
By the way, do not send me private message, use the "contact us" form instead.

Please Log in or Create an account to join the conversation.

  • Posts: 468
  • Thank you received: 30
  • Hikashop Business
5 years 9 months ago #293926

Bonjour,

Merci beaucoup. Plus d'erreur 500. J'ai testé différentes pages, tout à l'air de fonctionner correctement.

Il me reste encore un seul type d'URL contenant "return_url" suivi d'un long code, et ça vient de la page du checkout (menu "passer-en-caisse" sur ce site), sur la croix de suppression d'un produit.

SEF
passer-en-caisse/product/updatecart/product_id-40/quantity-0/return_url-aHR0cDovL2xvY2FsaG9zdC9sZXN5ZXV4ZmVydGlsZXMvd3d3L3Bhc3Nlci1lbi1jYWlzc2U

Non-SEF
index.php?option=com_hikashop&Itemid=104&ctrl=product&lang=fr&product_id=40&quantity=0&return_url=aHR0cDovL2xvY2FsaG9zdC9sZXN5ZXV4ZmVydGlsZXMvd3d3L3Bhc3Nlci1lbi1jYWlzc2U%3D&task=updatecart

Please Log in or Create an account to join the conversation.

  • Posts: 81361
  • Thank you received: 13037
  • MODERATOR
5 years 9 months ago #293933

Bonjour,

Celle URL provient du fichier "show_block_cart". Il faut changer le code:

<?php echo hikashop_completeLink('product&task=updatecart&product_id='.$product->product_id.'&quantity=0&return_url='.urlencode(base64_encode(urldecode($url)))); ?>
de cette vue par juste # pour éviter le soucis.

The following user(s) said Thank You: lesyeux

Please Log in or Create an account to join the conversation.

  • Posts: 468
  • Thank you received: 30
  • Hikashop Business
5 years 9 months ago #293975

Bonjour,

Merci. Pour l'instant, le problème est réglé. Je reviendrai ici si jamais des nouvelles URL de ce type ("return_url") font leur apparition.

Juste pour ne pas mourir idiot : quelle est leur fonction ? Dit autrement, pour la dernière modif suggérée (simple remplacement du code PHP par "#'), je perds quoi ?

Please Log in or Create an account to join the conversation.

  • Posts: 81361
  • Thank you received: 13037
  • MODERATOR
5 years 9 months ago #293995

Bonjour,

Le paramètre return_url permet de fournir l'URL de la page courante pour qu'après que l'action soit exécutée par le serveur, il puisse rediriger le client vers la page concernée.
Donc par exemple, sur le module panier, ce paramètre contient l'URL de la page où vous êtes. Ainsi, après la suppression d'un produit du panier, la page où vous étiez peut être réaffichée.

Sur la dernière URL, celle ci n'est utilisée que si le javascript est complètement désactivé. Donc c'est une fonction "de secours" qui n'est normalement pas utile. Le fait de mettre # désactive cette fonction de secours , mais elle ne sert à rien de toute façon pour le bon fonctionnement de votre passage en caisse.
C'est surtout utile lorsqu'il y a une erreur javascript sur la page dûe à une autre extension, qui empêche le javascript d'HikaShop de fonctionner (car le navigateur n'initialise pas le javascript HikaShop dans ce cas), mais ce n'est pas le cas sur votre site.

The following user(s) said Thank You: lesyeux

Please Log in or Create an account to join the conversation.

  • Posts: 468
  • Thank you received: 30
  • Hikashop Business
5 years 9 months ago #293997

Merci beaucoup pour ces précisions !

Please Log in or Create an account to join the conversation.

Time to create page: 0.079 seconds
Powered by Kunena Forum