Bienvenue invité ( Connexion | Inscription )
![]() ![]() |
14 Mar 2007, 14:26
Message
#1
|
|
|
Ceinture marron OSC Groupe : Membres Messages : 1423 Inscrit : 24-April 03 Membre no 1102 |
Bonjour,
J'ai installé récemment SEO URL 1.2b(Celui ci) et j'ai un soucis de cohabitation avec CCGV, quand je désire valider un coupon de rédution, les message d'erreur de type (votre coupon est expirée, votre coupon est valide etc..) ne s'affichent plus. Y'a t'il une version de CCGV modifié pour SEO URL ? quelqu'un à t'il le même soucis ? Merci d'avance pour votre aide Ce message a été modifié par polo - 20 Mar 2007, 21:37. -------------------- OSC 2.1.3 et MS2 (PHP Version 5.2.17)
|
|
|
22 Mar 2007, 09:35
Message
#2
|
|
|
Ceinture blanche OSC Groupe : Membres Messages : 16 Inscrit : 13-October 06 Membre no 12633 |
Bonjour,
J'ai le même problème. Je ne l'ai pas encore résolu mais en fait, le problème vient d'un urlencode en trop qui est fait quelque par. Déjà à la base, CCGV se sert d'une fonction de message d'erreur pour renvoyer les informations aux utilisateurs. Moi, dès le départ, je ne trouve pas ça très clean car même les messages "succès" (genre "votre coupon est valide") utilisent la fonction de remontée d'erreur. Donc de base, c'est le bordel, avant de comprendre que c'est la gestion d'erreur OS Comerce qui foire, il faut se dire qu'on déclenche une erreur (ce qui n'était pas mon cas car mes coupons sont valides). Donc, quand on se penche sur la gestion d'erreur, on s'apperçoit que le serveur renvoi ses codes erreur sur HTTP via GET. Donc tout est dans l'URL. En php, pour lire sur GET, on cherche les variables $HTTP_GET_VARS['mavariable], soit dans l'url page.php?mavariable=salut+le+monde (je fais court). Si on a 2 variables, on aura une URL genre page.php?var1=toto+toto&var2=tata+tata. Si on regarde ce que la page checkout_payment.php essaie de lire en retour de validation de coupon, on lit un truc du genre checkout_payment.php?payment_error=ot_coupon&error=Ce+bon+de+r%E9duction+est+valide.10.00%80+on+orders+greater+than+20.00%80. Oh, mais qu'est-ce que c'est que ce & qui correspond au caractère & codé en HTML ? D'où vient-il, que fait-il, comment le supprimer ? Je suis dessus pour l'instant. A bientôt, |
|
|
22 Mar 2007, 09:42
Message
#3
|
|
|
Ceinture blanche OSC Groupe : Membres Messages : 16 Inscrit : 13-October 06 Membre no 12633 |
Ceci dit, en désactivant SEO url, je ne retrouve pas de comportement normal.
|
|
|
22 Mar 2007, 10:08
Message
#4
|
|
|
Ceinture blanche OSC Groupe : Membres Messages : 16 Inscrit : 13-October 06 Membre no 12633 |
Bonjour,
J'ai finallement trouvé la solution. D'une part, un mini fix trouvé sur le site OS Commerce pour SEO URL. Et la modification de 2 fonctions : Dans includes/classes/seo.class.php : Fonctions prises dans la modif de Tony Tromp, le 9 mai 2006 : [codebox]/** * Function to return SEO URL link SEO'd with stock generattion for error fallback * @author Bobby Easland * @version 1.0 * @param string $page Base script for URL * @param string $parameters URL parameters * @param string $connection NONSSL/SSL * @param boolean $add_session_id Switch to add osCsid * @return string Formed href link */ function href_link($page = '', $parameters = '', $connection = 'NONSSL', $add_session_id = true){ $this->start($this->timestamp); $this->performance['NUMBER_URLS_GENERATED']++; if ( !in_array($page, $this->attributes['SEO_PAGES']) || $this->attributes['SEO_ENABLED'] == 'false' ) { return $this->stock_href_link($page, $parameters, $connection, $add_session_id); } $link = $connection == 'NONSSL' ? $this->base_url : $this->base_url_ssl; $separator = '?'; if ($this->not_null($parameters)) { $link .= $this->parse_parameters($page, $parameters, $separator); } else { $link .= $page; } $link = $this->add_sid($link, $add_session_id, $connection, $separator); $this->stop($this->timestamp, $time); $this->performance['TOTAL_TIME'] += $time; //return htmlspecialchars(utf8_encode($link)); return utf8_encode($link); } # end function /** * Stock function, fallback use */ function stock_href_link($page = '', $parameters = '', $connection = 'NONSSL', $add_session_id = true, $search_engine_safe = true) { global $request_type, $session_started, $SID; if (!$this->not_null($page)) { die('</td></tr></table></td></tr></table><br><br><font color="#ff0000"><b>Error!</b></font><br><br><b>Unable to determine the page link!<br><br>'); } //ojp ALT definition if ($page == '/') $page = ''; if ($connection == 'ALT') { $link = HTTP_ALT_SERVER . DIR_WS_HTTP_CATALOG; } elseif ($connection == 'NONSSL') { $link = HTTP_SERVER . DIR_WS_HTTP_CATALOG; } elseif ($connection == 'SSL') { if (ENABLE_SSL == true) { $link = HTTPS_SERVER . DIR_WS_HTTPS_CATALOG; } else { $link = HTTP_SERVER . DIR_WS_HTTP_CATALOG; } } else { die('</td></tr></table></td></tr></table><br><br><font color="#ff0000"><b>Error!</b></font><br><br><b>Unable to determine connection method on a link!<br><br>Known methods: NONSSL, SSL, ALT</b><br><br>'); } if ($this->not_null($parameters)) { $link .= $page . '?' . $this->output_string($parameters); $separator = '&'; } else { $link .= $page; $separator = '?'; } while ( (substr($link, -1) == '&') || (substr($link, -1) == '?') ) $link = substr($link, 0, -1); if ( ($add_session_id == true) && ($session_started == true) && (SESSION_FORCE_COOKIE_USE == 'False') ) { if ($this->not_null($SID)) { $_sid = $SID; } elseif ( ( ($request_type == 'NONSSL') && ($connection == 'SSL') && (ENABLE_SSL == true) ) || ( ($request_type == 'SSL') && ($connection == 'NONSSL') ) ) { if (HTTP_COOKIE_DOMAIN != HTTPS_COOKIE_DOMAIN) { $_sid = $this->SessionName() . '=' . $this->SessionID(); } } } if ( (SEARCH_ENGINE_FRIENDLY_URLS == 'true') && ($search_engine_safe == true) ) { while (strstr($link, '&&')) $link = str_replace('&&', '&', $link); $link = str_replace('?', '/', $link); $link = str_replace('&', '/', $link); $link = str_replace('=', '/', $link); $separator = '?'; } if (isset($_sid)) { $link .= $separator . $_sid; } $this->performance['NUMBER_STANDARD_URLS_GENERATED']++; $this->cache['STANDARD_URLS'][] = $link; $time = 0; $this->stop($this->timestamp, $time); $this->performance['TOTAL_TIME'] += $time; // return htmlspecialchars(utf8_encode($link)); return utf8_encode($link); } # end default tep_href function[/codebox] Et le mini fix de bchecketts du 1° janvier 2006 dans la fonction do_redirect() du même fichier, chercher la ligne : [codebox]$url = $this->href_link($this->uri_parsed['path'], $params, 'NONSSL', false);[/codebox] et ajouter dessous : [codebox]# BC Redirects shouldn't have '&'s in them $url = preg_replace('/&/','&',$url);[/codebox] La seule modif mini fix de bchecketts n'a pas suffit dans mon cas. Peut être que seule la première partie est nécéssaire. Je n'en sais rien et je suis trop dégouté pour chercher plus loin et il me reste de toute façon des erreurs dans le système Voucher à régler. Au suivant ! |
|
|
22 Mar 2007, 10:24
Message
#5
|
|
|
Ceinture marron OSC Groupe : Membres Messages : 1423 Inscrit : 24-April 03 Membre no 1102 |
CITATION(nimp0001 @ 22 Mar 2007, 09:42) [snapback]227119[/snapback] Ceci dit, en désactivant SEO url, je ne retrouve pas de comportement normal. Merci pour ton aide, car je me sent un peu seul nimp0001 sur ce coup la, je suis "heureux" de voir que je ne suis pas seul. Je crois que tu as raison concernant les url, car c'est bien la que viens le soucis, actuellement j'essai de réinstaller CCGV + SEO à partir d'une ancienne sauvegarde de mon site pour installer le couple mais dans un ordre différent (car ont m'auraois dis que l'ordre est important) moi je n'y crois pas trop, car dès le début j'avais en effet remarqué que les messages d'error n'était pas en cohérance avec le fonctionnement globale de CCGV. Et je confirme voici donc le résultat l'ors de la validation d'un coupon OK: ...checkout_payment.php?payment_error=ot_coupon&error=Code+du+coupon+invalide Et effectivement ce & pourrait être la cause car il n'y est pas présent quand URL SEO est désactivé. Voici ce que cela donne quand je valide ce coupon sans SEO URL, le message lui s'affiche dans la page et aussi dans le lien ...checkout_payment.php?payment_error=ot_coupon&error=%2A%2A%2A+Afin+de+d%E9duire+votre+coupon+de+r%E9duction+du+montant+total+de+votre+commande%2C+merci+de+bien+vouloir+saisir+une+nouvelle+fois+votre+code%2C+ensuite%2C+cliquez+sur+le+bouton+%22valider+mon+coupon%22 Donc de mon coté aussi je fais des recherche, je vais faire d'autre teste est essayer de réinstaller SEO + CCGV sur une base de sauvegarde plus saine. A plus et tien nous au courant -------------------- OSC 2.1.3 et MS2 (PHP Version 5.2.17)
|
|
|
22 Mar 2007, 10:45
Message
#6
|
|
|
Ceinture marron OSC Groupe : Membres Messages : 1423 Inscrit : 24-April 03 Membre no 1102 |
J'ai effectué tes modifs sur la class seo, et çà marche !!! Merci nimp0001 !!
Par contre il est vrai que c'est usine à gaz, chez moi je suis obligé de valider 2 fois le coupon avant qu'il soit pris en compte Ce message a été modifié par polo - 22 Mar 2007, 11:07. -------------------- OSC 2.1.3 et MS2 (PHP Version 5.2.17)
|
|
|
28 Jan 2008, 01:19
Message
#7
|
|
|
Ceinture jaune+ OSC Groupe : Membres Messages : 94 Inscrit : 17-May 07 Lieu : Normandie Membre no 17253 |
Merci, merci, merci.
Moi aussi j'ai été sauvé. J'ai effectué tes modifs sur la class seo, et ça marche, c'est super !!! -------------------- Oscommerce juillet 2008 - cybermut - coupons de réduction -
|
|
|
![]() ![]() |
|
Version bas débit | Nous sommes le : 24th May 2013 - 18:06 |
| Ce site est déclaré auprès de la commision Nationale de l'Informatique et des Libertés (déclaration n°: 1043896) |