fredopahu Posted June 29, 2011 Share Posted June 29, 2011 Bonjour à tous, Je me pose une question sans réponse pour le moment, peut être allez vous pouvoir m'aider:J'ai besoin de proposer 2 affichages de prix différents aux visiteurs sans compte (switch de l'un à l autre via un paramètre URL par ex, cette partie est hors périmètre de la question).Exactement comme si je créais 2 groupes avec des réductions différentes et que l'utilisateur puisse prévisualiser le site comme si il était membre d'un groupe, puis de l'autre (ex : voir les prix publics, puis voir les prix pour les membres)D'après ce que j'ai compris, on ne peut affecter un groupe qu'à un utilisateur disposant d'un compte, est-ce vrai ? N'est-il pas possible de changer via php le groupe par défaut d'un visiteur ? uniquement pour sa session.PS: je peux développer, j'ai simplement besoin d'une piste ou idée, ou qu'on me souffle la variable/fonction à trifouiller pour y arriver Merci d'avance.Si le message n'est pas clair, n'hésitez pas à le dire. Link to comment Share on other sites More sharing options...
jherbaux Posted June 29, 2011 Share Posted June 29, 2011 tu aurais du poser ta question rubrique "développement".Un modo, va sûrement déplacer le sujet.Néanmoins : il est impossible (je pense) de faire ce que tu veux sans dev.Pour ta "variable" je te conseil d'utiliser la variable cookie de prestashop (et non de PHP).Tu pourras grâce a cette variable modifier la fonction getStaticPrice pour afficher le prix que tu as besoin avec la réduction que tu as besoin. Link to comment Share on other sites More sharing options...
fredopahu Posted June 29, 2011 Author Share Posted June 29, 2011 Merci pour ces premiers éléments de réponse.se servir de la variable cookie de presta, OK je sais faire à priori.Par contre, tu dis de modifier la fonction getStaticPrice, via la variable cookie ?Est-ce qu'il y a possibilité de placer une sorte de hook sur la fonction ? ou j'ai mal compris ? Si oui, si tu as des exemples de mise en œuvre, je suis preneur ! Merci Link to comment Share on other sites More sharing options...
jherbaux Posted June 29, 2011 Share Posted June 29, 2011 je n'ai pas d'exemple avec la 1.4 mais il faut surcharger la fonction et la modifier légérement Link to comment Share on other sites More sharing options...
fredopahu Posted June 29, 2011 Author Share Posted June 29, 2011 Pour info, si ça change quelque chose, je suis en 1.3 Link to comment Share on other sites More sharing options...
jherbaux Posted June 29, 2011 Share Posted June 29, 2011 oui sa change ^^,tu vas donc devoir faire du spécifique, modifier le coeur de presta.2 solutions, 1 --> comme un bourrin directement dans la classe Product2 --> créer une classe a coté, qui surcharge la fonction quand tu en as besoin.Après tout dépend de comment du fais compte gérer la modification de prix. c'est en %? en valeur ? ou aucune relation entre l'ancien et le nouveau prix ? Link to comment Share on other sites More sharing options...
fredopahu Posted June 29, 2011 Author Share Posted June 29, 2011 Oui ce sera du %, donc théoriquement assez simple à réaliser si on sait où trifouiller Je vais essayer de chercher des exemples d'override de fonction dans presta, par contre, c'est la relation avec la variable cookie que je comprends pas et qui semble être très claire pour toi.J'imagine que la finalité c'est de se servir du cookie pour dire "ok pour cette session, j'utilise la classe surchargée". Est-ce qu'il y a un truc existant pour faire ça ou est ce que c'est à moi de rajouter un paramètre de cookie et le vérifier directement dans la classe product afin de savoir si on surcharge ou pas ? Link to comment Share on other sites More sharing options...
jherbaux Posted June 29, 2011 Share Posted June 29, 2011 tu renseignes toi même la variable if(utilisateur_genial == 1){ $cookie->mavariable = 1 }else{ $cookie->mavariable = 2 } quand ta variable est assigné, dans la fonction getPriceStatic tu peux juste à la fin, avant self::$_prices[$cacheId] = $price; modifier la valeur de $pricepar exemple if($cookie->mavariable == 1){ $price = $price * 2; } je ne sias plus si on a acces ou pas à la variable cookie dans cette fonction. Si non tu la rajoute : global $cookie Link to comment Share on other sites More sharing options...
fredopahu Posted June 29, 2011 Author Share Posted June 29, 2011 Impec, tout est clair dans ma tête, y'a plus qu'à faire.Pour la première partie, ok c'est ce que je pensais.Pour le reste, je vais le faire à la façon "bourrin" dans un premier temps, direct dans la classe, histoire de valider le truc Je te tiens au jus ! Merci jherbaux Link to comment Share on other sites More sharing options...
fredopahu Posted June 29, 2011 Author Share Posted June 29, 2011 Alors...Ca marche, j'ai plutôt modifié la fonction getReductionValue.J'ai rajouté ça au tout début global $cookie; if($cookie->mavariable== 1){ $reduction_price = 0; $reduction_percent = 20; } Le soucis, c'est que ça ne modifie pas la variable $product->reduction_percent (elle reste à 0) et donc l'affichage sur tout le site n'est pas optimisé (prix barrés, fiche produit/rayon, etc...)J'ai passé la soirée à chercher comment modifier "en dur" cette variable depuis la classe mais tous mes tests ont échoué.Je n'ai pas trouvé dans quelle fonction il va sortir les infos de la BDD pour les mettre dans cette variable, ni les autres d'ailleurs.Je peux bien sûr faire un $product->reduction_percent = 20; dans les fichiers product.php, category.php etc... mais je préférerai le faire une seule fois "à la source" dans la classe Une idée ? Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now