Imaginaerum Posted July 28, 2014 Share Posted July 28, 2014 (edited) Voici mes remarques concernant Presta... Y a des trucs super interessants... mais côté developpement c'est un petit peu pauvre... Par exemple: Je developpe actuellement un module qui doit modifier à la volée les prix des produits... et ceux sans les stocker dans la base... Donc je me dis : "tiens des hooks :)"... Notament un actionCartSave... qui sert à rien !!! Sauf a dire: "ok t'as ajouté un produit au panier".... Donc je vais plus haut avec un actionObjectCartUpdateBefore... Super !!! mais je suis pas plus avancé... J'ai un objet cart qui est egalement présent dans un actionCartSave mais mes produits sont donc un autre objet que la classe cart importe à la volée.. Du coup, on en fait pas grand chose puisque dans les tables cart on a aucune info de prix... Pourquoi tant de haine ? C'est le but d'un objet... stocker des infos qui lui sont propres... Là on se contente de recuperer des infos à droite et à gauche... Donc du coup pour un module de prix dynamique qui ne peuvent se gérer via des specifics prices ou des declinaisons on est purement et simplement réduit à surcharger... Mais voilà ! la surcharge est trés mal faite (la gestion des themes encore pire)... On doit copier/coller vulgairement un tas de fichiers qui "figent" prestashop ! (soit dans dans de la maintenance de comparaison ! soit dans le blocage de version...)... C'est tout simplement dommage... on a un produit plein de qualité... mais qui se résume à des ecommerce de base au final. sous peine de devoir conclure un contrat de maintenance qui couterait plus cher que le site lui même... Je ne veux absoluement pas descendre en fleche ce produit... car il a vraiment des aspect trés sympa est bien fait... Sauf si ce que je dis plus haut est faux et que j'ai mal lu le code source... car là je vois absolument pas comment modifier un prix à la volée... dans le panier et fiche produit sans de voir surcharger une classe ProductCore... (chose que je me refuse de faire car j'ai pas envie de devoir faire de diff file a chaque maj) Edited July 29, 2014 by Imaginaerum (see edit history) Link to comment Share on other sites More sharing options...
SMorillon.com Posted July 28, 2014 Share Posted July 28, 2014 (edited) Donc du coup pour un module de prix dynamique qui ne peuvent se gérer via des specifics prices ou des declinaisons on est purement et simplement réduit à surcharger... Mais voilà ! la surcharge est trés mal faite (la gestion des themes encore pire)... On doit copier/coller vulgairement un tas de fichiers qui "figent" prestashop ! (soit dans dans de la maintenance de comparaison ! soit dans le blocage de version...)... sans de voir surcharger une classe ProductCore... (chose que je me refuse de faire car j'ai pas envie de devoir faire de diff file a chaque maj) Je ne suis pas sûr de vous suivre.... Vous pouvez très facilement surcharger une fonction de la class ProductCore, je pense notamment à la fonction getPriceStatic : class Product extends ProductCore { public static function getPriceStatic($id_product, $usetax = true, $id_product_attribute = null, $decimals = 6, $divisor = null, $only_reduc = false, $usereduc = true, $quantity = 1, $force_associated_tax = false, $id_customer = null, $id_cart = null, $id_address = null, &$specific_price_output = null, $with_ecotax = true, $use_group_reduction = true, Context $context = null, $use_customer_price = true) { $result = parent::getPriceStatic($id_product, $usetax , $id_product_attribute, $decimals, $divisor, $only_reduc, $usereduc, $quantity, $force_associated_tax, $id_customer, $id_cart, $id_address, $specific_price_output, $with_ecotax, $use_group_reduction, $context, $use_customer_price); // Votre traitement pour modifier $result return $result; } } Cette façon de surcharge la class Product ne nécessite aucunement de devoir faire de diff file a chaque maj et il n'y a aucun copier /coller de fichier à faire... Edited July 28, 2014 by SMorillon.com (see edit history) Link to comment Share on other sites More sharing options...
Imaginaerum Posted July 28, 2014 Author Share Posted July 28, 2014 Oui, c'est vrai... Et c'est de cette manière qu'il faut le faire... mais j'ai pas encore lu suffisament de code pour etre sur que seule la methode getPriceStatic soit vraiment celle à utiliser... S'agit il de la mthode utilisée à tous les niveaux de presta ? (fiche produit, quick view ? panier ?) Mais mea culpa... Ce que je veux surtout dire : l'idéal serait de passer par un hook... qui transformerais mon objet avant ou aprés l'avoir sauvé... et non devoir surcharger... Surtout qu'on a des hook globaux ! ce qui est un trés bon point... C'est juste la conception objet qui me géne... Link to comment Share on other sites More sharing options...
Imaginaerum Posted July 28, 2014 Author Share Posted July 28, 2014 Autre précision: quand je parle de conception objet... c'est mon objet cart qui me semble trop pauvre pour etre exploitable... Il est seulement constitué de partie qui sont "dure" et non maléable... et la bdd ne stocke que trop peu d'info au final. Link to comment Share on other sites More sharing options...
Imaginaerum Posted July 29, 2014 Author Share Posted July 29, 2014 Avancées... Mon constat reste amer... J'arrive à manipuler les prix mais y a toujours des endroits qui posent soucis (affichage)... Mon tarif est bien appliqué mais l'affichage est pas du tout géré (ou en partie) par la partie panier et fiche produit... Ce qui m'oblige à chercher les différentes parties (classes, vues, etc) qui feront que mes affichages front soient corrects... Ce qui à la base est simple devient ardu pour si peu de chose. Il y a d'excellente choses dans prestashop. il faudrait juste que les dependances inter-objets disparaissent peu a peu... pour en revenir à mon probléme, dans la methode getPriceStatic on y retrouve des bouts de panier, de la géoloc du coup on peut pas y greffer grand chose sans repliquer le code complétement... Link to comment Share on other sites More sharing options...
Imaginaerum Posted July 29, 2014 Author Share Posted July 29, 2014 [RESOLU] Mon module est fonctionnel... Donc je rewrite la methode getPriceStatic de la classe Product en surchargeant. (même si j'aurais préféré un hook ;) ) Les prix sont corrects sauf dans la fiche produit où j'implemente un ajax (pour pas rewriter la partie theme en ajoutant un autoload) qui recupére le bon prix dés qu'on change de combinaison et de quantité (prix degressif d'aprés la combinaison)... Tout semble fonctionnel côté front... Merci à SMorillon.com pour sa réponse à ce topic 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