Jump to content

Comment modifier une information produit depuis un module avant affichage


Recommended Posts

Bonjour à tous,

J'essaie de faire les choses proprement mais la version 1.7 et les choix des dev n'aident VRAIMENT PAS! (oui je commence à en avoir plein le c##!).

Ma situation est la suivante :

Je développe un module de personnalisation de produit (et le premier qui me redirige vers le shop addons de presta s'en prend une!) sur mesure pour un client.

Le champ personnalisé que j'ajoute à un produit un via le code et avec l'option is_module=1 fou la merde.

  1. Le champ est automatiquement supprimé de la base par AdminProductWrapper ligne 621, solution => Ajouter une valeur bidon dans customized_data, GG les dev!
  2. Le champs est automatiquement mis à jour is_delete=1 par AdminProductWrapper ligne 600, solution => Surcharger Product pour modifier la fonction softDeleteCustomizationFields afin de ne pas traiter les champs quand is_module=1, GG les dev! (si vous avez une solution sans surcharge je perds!)
  3. Les champs qui sont à is_module=1 ne sont pas listés par le productPresenter donc à l'affichage ils ne sont pas pris en compte, pas de souci là dessus de tte façon je devait dev un éditeur pour remplacer l'affichage. Le souci réside dans le fait que la propriété "customizable" est à 0 et impossible de changer cette valeur.

Mon problème est donc le suivant : pouvoir envoyer l'info à la vue comme quoi le produit affiché est customizable pour remplacer le "ajouter au panier" par "personnaliser".

J'ai essayé d'utiliser le hook FilterProductContent (que j'ai vu venir comme un messie) mais les dev ont eu la bonne idée de protéger la propriété product, impossible donc d'en modifier le contenu. Franchement les gars, si votre but est de faire chier le monde et vos collègues dev, vous vous surpassez!

J'ai fait le tour des hook et je ne vois pas de solution. A priori prestashop s'oriente vers des modules pour ne pas faire de surcharge, je ne suis pas pour mais je fais avec, sauf que je n'y arrive pas...

Si vous avez une solution élégante je vous paie un verre!

  • Like 3
Link to comment
Share on other sites

  • 5 months later...

Salut !

Merci pour ton petit post, je me sens moins seul désormais...
Je planche visiblement sur un dev un peu similaire et me suis vraiment galéré à ajouter mes champs de personnalisation à mes produits...

La première chose que je ne comprends pas... c'est le traitement de cette colonne "is_module"...
Je suis tombé en parallèle sur ce début de discussion : https://www.prestashop.com/forums/topic/549666-guide-the-new-customization-system-in-prestashop-17/

Quote

"A new column was added: `is_module` which means that the field belongs to a module
When this column has a value of 1, the field won't be displayed on the front"

Je ne vois absolument pas le but de tout ça... Perso j'ai besoin que mes champs apparaissent sur le front-end... je ne comprends pas le côté systématique du contraire...

Donc au final j'ai décidé de ne pas utiliser le is_module (je le laisse à 0)... Comme ça pas de problème de visibilité côté public...
Et j'ai surchargé comme toi la fonction softDeleteCustomizationFields mais aussi deleteUnusedCustomizationFields pour leur faire faire... rien.
J'empêche de toutes façons la création manuelle de champs de personnalisation, c'est mon module qui le fait à l'enregistrement d'un produit (dans mon cas, ce sont toujours les mêmes champs qui sont créés). Donc je ne me soucis pas de leur suppression éventuelle...

Pour le moment ça tourne mais je n'ai pas terminé mon dev, à voir si tout est ok jusqu'au bout... C'est vraiment crado de bosser comme ça mais pas trop le choix je crois malheureusement...

Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...