afipc Posted January 7, 2011 Share Posted January 7, 2011 Bonjour,Je souhaitais disposer des produits phares dans une colonne, pour qu'ils soient visible sur tout le site.Comme cette fonctionnalité n'est pas prévue d'origine (on ne peut mettre les produits phares que sur le centre de la page d'accueil) je me suis mis à modifier le code.Je voulais un visuel identique aux produits déjà vus, donc j'ai étudié ce fichier, puis je l'ai adapté aux produits phares :modification du homefeatured.php pour rajouter une fonction hookLeftColumn($params)identique à celle hookHome, sauf que je charge un nouveau .tpl à la fin : homefeatured-col.tplqui lui est donc basé sur le .tpl des déjà vus.jusque là tout va bien, j'affiche correctement mes produits phares (faudra que je poste ma contrib' plus tard d'ailleurs en visualisant le panier vide, c'est ok. Par contre quand j'ajoute au moins un produit, ça dérape sévère en le visualisant!En fait il affiche tous les produits phares comme si ils étaient dans le panier! avec des réactions bizarres : marqués indisponible, quantité à 0, prix unitaire 0... et mon produit qui devrait être tout seul n'est même pas là! Le panier en colonne fonctionne bien lui.Sinon le calcul du prix est bon, on peut continuer la commande tout se passe bien, le problème se situe juste à l'affichage du panier. Dès que je désactive les produits phares de la colonne, hop c'est corrigé!voir l'image jointeJe ne vois pas trop pourquoi il y a un "conflit" entre l'affichage du panier et le module produits phares... Si vous avez des idées je suis preneur Link to comment Share on other sites More sharing options...
afipc Posted January 7, 2011 Author Share Posted January 7, 2011 Petit complément, j'ai essayé en le plaçant sur la colonne de droite (donc en rajoutant juste dans le homefeatured.php une fonction hookRightColumn($params) identique à la ...Left..., puis en le supprimant la greffe à gauche et en faisant la greffe à droiteet là, aucun problème d'affichage, le panier est tout bon !? Link to comment Share on other sites More sharing options...
afipc Posted January 11, 2011 Author Share Posted January 11, 2011 un petit up, personne n'a d'idée là-dessus?c'est un souci assez important je trouve Link to comment Share on other sites More sharing options...
afipc Posted January 11, 2011 Author Share Posted January 11, 2011 je suis en train de chercher du côté de ces fichiers :themes/nom du theme/shopping-cart.tplthemes/nom du theme/shopping-cart-product-line.tplcar c'est vraiment quand il affiche la ligne du produit dans le panier que ça pose problème, au lieu de prendre les produit effectivement dans le panier, il prend les attributs des produits phares (du moins l'image, la description et le lien)par contre au-dessus, le "dernier produit ajouté" est bon, le "votre panier contient X produits" aussi, ainsi que les prix HT, TTC, port... Link to comment Share on other sites More sharing options...
afipc Posted January 11, 2011 Author Share Posted January 11, 2011 Nouvel essai :J'ai réinstallé une boutique "vierge" d'origine avec les produits de démonstrations et les modules par défaut installés, sur un autre pc.J'ai uniquement rajouté dans le fichier /modules/homefeatured/homefeatured.php : function hookLeftColumn($params) { return $this->hookHome($params); } function hookRightColumn($params) { return $this->hookHome($params); } puis j'ai greffé le module sur la colonne de gauche, le problème est présentsur la colonne de droite pas de problèmedonc ça ne vient pas de mes autres modifications puisque le comportement est identique sur une boutique toute neuve... Link to comment Share on other sites More sharing options...
afipc Posted February 18, 2011 Author Share Posted February 18, 2011 Personne n'a d'idée là-dessus? Link to comment Share on other sites More sharing options...
afipc Posted February 18, 2011 Author Share Posted February 18, 2011 je n'ai pas précisé que je suis sur la version 1.3.3.0 Link to comment Share on other sites More sharing options...
MayMo design Posted February 18, 2011 Share Posted February 18, 2011 c'est beau tout ça, mais est ce que vous pouvez nous donner un lien vers la boutique pour voir de prés.et autre chose, vous n'aurez pas dù refaire le module comme le moduledéjàvu parce que c'est pas identique, donc votre problème est sur le fichier tpl que vous avez modifié.Ps: vous avez remarquer sans doute que personne ne vous a répondu, ba c'est simple, on peut pas comprendre et déterminer un problème si on le voit pas de prés. Link to comment Share on other sites More sharing options...
afipc Posted February 18, 2011 Author Share Posted February 18, 2011 Je pensais avoir décrit suffisamment correctement le problème, et puis avec l'image jointe, on voit bien le comportement bizarrec'est une boutique d'essai, voici un lien :http://afipc.no-ip.biz/prestashop/pour voir le problème, il faut ajouter un produit au panier, puis visualiser le panierlà, le module homefeatured est dans la colonne de gauche, si je le met dans la droite il n'y a pas le problème(et l'affichage est géré par le .tpl d'origine, j'ai juste modifié le .php pour pouvoir le greffer sur les colonnes -> voir le post #4)"vous n’aurez pas dù refaire le module comme le moduledéjàvu parce que c’est pas identique"-> même sans modifier le .tpl original, il y a le souci -> voir le post #4et en plus, avec mon .tpl modifié et greffé sur la colonne de droite, aucun problème Link to comment Share on other sites More sharing options...
MayMo design Posted February 18, 2011 Share Posted February 18, 2011 méme en ajoutant un produit au panier depuis la fiche produit, ça fait le même truc. donc envoie moi ton module modifier homefeatrued et désinstale le pour voir si le probléme persiste sur la fiche produit ou non.mets le en rar ou zip Link to comment Share on other sites More sharing options...
afipc Posted February 18, 2011 Author Share Posted February 18, 2011 oui, qu'on l'ajoute au panier depuis n'importe ou, le problème se présente quand on visualise le panierce n'est pas nécessaire de le désinstaller, je l'enlève juste de la colonne de gauche et le problème disparait(et comme je disais, si je le met dans la droite, pas de problème)voici le module homefeatured, mais je n'ai rien modifié à part le .php pour rajouter au bout : function hookLeftColumn($params) { return $this->hookHome($params); } function hookRightColumn($params) { return $this->hookHome($params); } homefeatured.zip Link to comment Share on other sites More sharing options...
afipc Posted February 18, 2011 Author Share Posted February 18, 2011 je viens de le greffer à droite, si tu veux voir Link to comment Share on other sites More sharing options...
MayMo design Posted February 18, 2011 Share Posted February 18, 2011 ok donc à droite tout va bien.envoie moi alors le fichier .php, ta surement fait une erreur. Link to comment Share on other sites More sharing options...
afipc Posted February 18, 2011 Author Share Posted February 18, 2011 merci pour ton aidevoici le php homefeatured.php Link to comment Share on other sites More sharing options...
MayMo design Posted February 18, 2011 Share Posted February 18, 2011 Étrange, j'ai tout essayé, toujours il y a ce problème du coté left. donc, soit tu continue à chercher, soit tu le met à droite , soit tu enlève la fonction ajouter au panier et voir si ça passera. Link to comment Share on other sites More sharing options...
Broceliande Posted February 20, 2011 Share Posted February 20, 2011 Salut , modification du homefeatured.php pour rajouter une fonction hookLeftColumn($params)identique à celle hookHome, sauf que je charge un nouveau .tpl à la fin : homefeatured-col.tplqui lui est donc basé sur le .tpl des déjà vus. J'imagine que tu charges ce tpl à partir du .tpl précédent ? je veux dire par un {include file= .... } ?Car si c'est le cas, smarty perd les données du tpl parent, que tu dois repasser en variable au tpl inclus :{include file=' file.tpl' mavariable=$mavariable mavariable2=$mavariable2 etc.... } Dans ton cas peut être simplement la variable $products , peut être plus , tout dépend de ce qu'il y a dans le tpl ($combinations par ex ) Link to comment Share on other sites More sharing options...
afipc Posted February 24, 2011 Author Share Posted February 24, 2011 Salut,hum non je n'ai pas mis de include file comme tu l'indique, voici le code à la fin dans le fichier homefeatured.php : function hookHome($params) { global $smarty; $category = new Category(1); $nb = intval(Configuration::get('HOME_FEATURED_NBR')); $products = $category->getProducts(intval($params['cookie']->id_lang), 1, ($nb ? $nb : 10)); $smarty->assign(array('products' => $products, 'homeSize' => Image::getSize('home'))); return $this->display(__FILE__, 'homefeatured.tpl'); } function hookLeftColumn($params) { global $smarty; $category = new Category(1); $nb = intval(Configuration::get('HOME_FEATURED_NBR')); $products = $category->getProducts(intval($params['cookie']->id_lang), 1, ($nb ? $nb : 10)); $smarty->assign(array('products' => $products, 'homeSize' => Image::getSize('home'))); return $this->display(__FILE__, 'homefeatured-col.tpl'); } function hookRightColumn($params) { global $smarty; $category = new Category(1); $nb = intval(Configuration::get('HOME_FEATURED_NBR')); $products = $category->getProducts(intval($params['cookie']->id_lang), 1, ($nb ? $nb : 10)); $smarty->assign(array('products' => $products, 'homeSize' => Image::getSize('home'))); return $this->display(__FILE__, 'homefeatured-col.tpl'); } smarty reprend donc les mêmes valeurs que si il est greffé au centrepar contre je ne vois pas comment faire avec ta méthode utilisant un include file, peux-tu m'en dire plus?@ Maymo :"soit tu enlève la fonction ajouter au panier et voir si ça passera"-> ce n'est pas lié au fait d'ajouter au panier, c'est quand on le visualise, je ne vois pas pourquoi tu dis cela? Link to comment Share on other sites More sharing options...
Broceliande Posted February 24, 2011 Share Posted February 24, 2011 En fait non tu peux oublier le include file , ceci est fait lorsque tu veux inclure un tpl dans un autre , ce que je croyais que tu avais fait.Le résultat que je vois sur ton site ne m'étonne pas plus que ça : smarty se mélange grave les pinceaux ici, avec des variables de même nom déclarées plusieurs fois .J'étais parti au départ pour te dire que dans tous les cas , recopier le code du hookLeft dans hooRight ou inversement ne peut pas être la bonne solution. Ton approche de départ était la meilleure : public function hookRightColumn($params) { return $this->hookLeftColumn($params); } ou inversement selon que le code complet se trouve dans left ou right mais bon là je sais que tu me suis.Ce qui se passe est que tu as la variable $product utilisée pour charger tes données.Or même sans vérifier, au vu du résultat, je parierais fort que ce même nom de variable est utilisé pour les produits du panier. D'ou l'incohérence d'affichage.Le problème ne se pose pas dans le hookHome puisqu'il n'est pas appelé dans la page de visualisation du panier.Tu peux soit m'envoyer la totalité du code , pour que je t'adapte les variables surtout dans ton *col.tpl (j'en ai pour 5mn), soit les remplacer toi même, par exemple dans le php : function hookLeftColumn($params) { global $smarty; $category = new Category(1); $nb = intval(Configuration::get('HOME_FEATURED_NBR')); $products = $category->getProducts(intval($params['cookie']->id_lang), 1, ($nb ? $nb : 10)); $smarty->assign(array('modFeatureProducts' => $products, 'homeSize' => Image::getSize('home'))); return $this->display(__FILE__, 'homefeatured-col.tpl'); } function hookRightColumn($params) { return $this->hookLeftColumn($params); } et dans homefeatured-col.tpl , que tu édites , tu fait un 'remplacer tout' de $product par $modFeatureProducts Je pense qu'avec ça le tour est joué.Désolé de pas avoir regardé plus tôt.PS : tiens nous au courant Link to comment Share on other sites More sharing options...
afipc Posted February 24, 2011 Author Share Posted February 24, 2011 Merci pour ces précisions concernant le smarty, mais en fait ça ne peut pas venir de là, car en fait hum je t'ai un peu induit en erreur tu m'excuseras le code du php de mon précédent message correspond donc à ce que je veux avoir au final, c'est à dire rajouter 2 fonctions hook left et right, qui chargent un homefeatured-col.tpl pour changer d'affichage par rapport au homefeatured.tpl original. Ca on peut laisser tomber pour l'instantcar en fait, dans le site exemple que j'ai donnéhttp://afipc.no-ip.biz/prestashopil y a encore moins de modifications que cela dans le homefeatured.php, que je te met ici : function hookHome($params) { global $smarty; $category = new Category(1); $nb = intval(Configuration::get('HOME_FEATURED_NBR')); $products = $category->getProducts(intval($params['cookie']->id_lang), 1, ($nb ? $nb : 10)); $smarty->assign(array('products' => $products, 'homeSize' => Image::getSize('home'))); return $this->display(__FILE__, 'homefeatured.tpl'); } function hookLeftColumn($params) { return $this->hookHome($params); } function hookRightColumn($params) { return $this->hookHome($params); } et donc le tpl chargé est celui d'originecomme tu vois, dans le site exemple, pas de souci pour smarty, vu que les hook left et right renvoient directement sur home. Là si tu regarde le site, les produits phares sont dans la colonne de gauche, donc si tu ajoute des produits au panier et que tu le visualise tu verras le souci. ---"Ce qui se passe est que tu as la variable $product utilisée pour charger tes données.Or même sans vérifier, au vu du résultat, je parierais fort que ce même nom de variable est utilisé pour les produits du panier. D’ou l’incohérence d’affichage.Le problème ne se pose pas dans le hookHome puisqu’il n’est pas appelé dans la page de visualisation du panier."----> je suis d'accord mais pourquoi quand je le met dans la droite il n'y a pas de souci, alors que c'est aussi appelé quand on visualise le panier de la même façon? Link to comment Share on other sites More sharing options...
afipc Posted February 24, 2011 Author Share Posted February 24, 2011 "Ce qui se passe est que tu as la variable $product utilisée pour charger tes données.Or même sans vérifier, au vu du résultat, je parierais fort que ce même nom de variable est utilisé pour les produits du panier. D’ou l’incohérence d’affichage."-> effectivement c'est ce que je me suis dit aussi, que le panier devait utiliser une variable commune avec le homefeaturedmais si le problème apparaissait aussi en colonne de droite, ça confirmerait cette réflexion, or ce n'est pas le cas... Link to comment Share on other sites More sharing options...
Broceliande Posted February 24, 2011 Share Posted February 24, 2011 Ok donc pour ce que tu veux au final , je t'ai répondu lol.Pour l'actuel, c'est la même punition : mais en fait ça ne peut pas venir de là je dirais sisisi!mais si le problème apparaissait aussi en colonne de droite, ça confirmerait cette réflexion, or ce n’est pas le cas… je dirais resisisi : pourquoi ne pas juste essayer ?Cela ne marche dans la colonne de droite que parce que le panier est déja affiché.Voici ce que je pense qu'il se passe (en très grossier) si tu affiches a gauche + à droite:0) cart.php assigne $products avec les produits du panier, puis laisse la main aux hooks :headertopleft1) colonne de gauche : le module assigne $products avec les produits phares, et s'affiche correctementinclude du tpl associé au panier2) la colonne centrale affiche le panier , mais pour une raison lambda, ne réassigne pas $products , ici ce n'est pas un hook, mais un tpl du themeright3)ben là c'est la même on n'a plus les produits phares dans $products surement une erreur smarty à ce momentEncore une fois , je pense que tu devrais essayer Link to comment Share on other sites More sharing options...
afipc Posted February 24, 2011 Author Share Posted February 24, 2011 ça avance! en effet tu as raison c'est le même genre de problème!alors j'ai fais un premier test avec une erreur, que je vais quand même te décrire car c'est intéressant!mon php : function hookHome($params) { global $smarty; $category = new Category(1); $nb = intval(Configuration::get('HOME_FEATURED_NBR')); $products = $category->getProducts(intval($params['cookie']->id_lang), 1, ($nb ? $nb : 10)); $smarty->assign(array('products' => $products, 'homeSize' => Image::getSize('home'))); return $this->display(__FILE__, 'homefeatured.tpl'); } function hookLeftColumn($params) { global $smarty; $category = new Category(1); $nb = intval(Configuration::get('HOME_FEATURED_NBR')); $products = $category->getProducts(intval($params['cookie']->id_lang), 1, ($nb ? $nb : 10)); $smarty->assign(array('colproducts' => $products, 'homeSize' => Image::getSize('home'))); return $this->display(__FILE__, 'homefeatured.tpl'); } function hookRightColumn($params) { return $this->LeftColumn($params); } donc dans hook left ce n'est plus "products" mais "colproducts", et j'ai dupliqué le homefeatured.tpl en homefeatured-col.tpl, puis recherché/remplacé dedans "$products" par "$colproducts"par contre j'ai oublié de mettre le bon tpl comme tu voisil utilise l'original avec products, et par exemple sur la page d'accueil je n'ai plus de produits phare dans la colonne de gauche (normal hin mais quand je visualise le panier, hop les produits qui sont dedans deviennent aussi des produits phares!ce qui prouve bien que c'est le même nom de variable "products" qui est utilisé! ----------------------je corrige donc le hook left pour mettre le bon tplreturn $this->display(__FILE__, 'homefeatured-col.tpl');et là, ça marche! le panier est correct et mes produits phares sont dans la colonne! superhum par contre maintenant quand je le met dans la colonne de droite, c'est pire lolil ne m'affiche plus aucun module de cette colonne! (j'ai testé en le mettant uniquement à droite, et aussi à droite et à gauche)crois-tu que je sois obligé de refaire une autre distinction? c'est à dire de faire un hook right avec un "colrightproducts"un nouveau tpl homefeatured-col-right.tpl?en tout cas merci pour ton aide Link to comment Share on other sites More sharing options...
afipc Posted February 24, 2011 Author Share Posted February 24, 2011 sinon oui il doit y avoir une histoire d'ordre d'affichage pour l'histoire que ça marchait avant dans la colonne de droite et pas dans la gauche Link to comment Share on other sites More sharing options...
afipc Posted February 24, 2011 Author Share Posted February 24, 2011 en effet, j'ai dû refaire la même chose pour le hook right et c'est bon!le php : function hookHome($params) { global $smarty; $category = new Category(1); $nb = intval(Configuration::get('HOME_FEATURED_NBR')); $products = $category->getProducts(intval($params['cookie']->id_lang), 1, ($nb ? $nb : 10)); $smarty->assign(array('products' => $products, 'homeSize' => Image::getSize('home'))); return $this->display(__FILE__, 'homefeatured.tpl'); } function hookLeftColumn($params) { global $smarty; $category = new Category(1); $nb = intval(Configuration::get('HOME_FEATURED_NBR')); $products = $category->getProducts(intval($params['cookie']->id_lang), 1, ($nb ? $nb : 10)); $smarty->assign(array('colproducts' => $products, 'homeSize' => Image::getSize('home'))); return $this->display(__FILE__, 'homefeatured-col.tpl'); } function hookRightColumn($params) { global $smarty; $category = new Category(1); $nb = intval(Configuration::get('HOME_FEATURED_NBR')); $products = $category->getProducts(intval($params['cookie']->id_lang), 1, ($nb ? $nb : 10)); $smarty->assign(array('col2products' => $products, 'homeSize' => Image::getSize('home'))); return $this->display(__FILE__, 'homefeatured-col2.tpl'); } } Merci beaucoup pour ton aide! Link to comment Share on other sites More sharing options...
Broceliande Posted February 24, 2011 Share Posted February 24, 2011 J'avais préparé ça pour toi (voir fichier joint), pas eu le temps d'envoyerIl n'est pas nécessaire en principe de refaire la manip pour le hookrightIl suffit d'avoir : function hookRightColumn($params) { return $this->hookLeftColumn($params); } Sinon c'est redondant.Regarde mon code, j'appelle 3 fois le même hook , et ça marche homefeatured (1).zip Link to comment Share on other sites More sharing options...
afipc Posted February 24, 2011 Author Share Posted February 24, 2011 argh oui regarde l'erreur que j'avais fait et pas vue! function hookRightColumn($params) { return $this->LeftColumn($params); }manquait le hook devant Left Link to comment Share on other sites More sharing options...
Broceliande Posted February 24, 2011 Share Posted February 24, 2011 Ben je pense que tu as tout pour aller au bout , pense à mettre [Résolu] devant le sujet en éditant ton premier post, ta question initiale étant me semble-t-il éclaircie Edit : ooups c'est fait ! Link to comment Share on other sites More sharing options...
Vertical_greg Posted March 22, 2011 Share Posted March 22, 2011 ça marche bien encore merci mais attention il faut remplacer $products par $modFeatureProducts et non $product. ça change tout et ça marche mieux ;-) ...et dans homefeatured-col.tpl , que tu édites , tu fait un 'remplacer tout' de $product par $modFeatureProducts Je pense qu'avec ça le tour est joué.Désolé de pas avoir regardé plus tôt.PS : tiens nous au courant Link to comment Share on other sites More sharing options...
afipc Posted March 23, 2011 Author Share Posted March 23, 2011 oui tout à fait, je n'avais pas repéré cette erreur, mais j'avais bien remplacé $products 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