Titre champs perso dans listing produit

  • Posts: 101
  • Thank you received: 4
11 years 5 months ago #102659

Bonjour,

Je voudrais afficher le titre des champs pero dans le listing des produits, mais je ne vois pas comment faire.

J'ai bien $this->row->nom_du_champs qui m'affiche la valeur, mais je voudrais afficher le titre. Je n'ai pas trouvé le titre dans $this->row

Une idée ?

Merci d'avance !

Please Log in or Create an account to join the conversation.

  • Posts: 13201
  • Thank you received: 2322
11 years 5 months ago #102689

Bonjour,

Si vous utilisez le nom du champ pour afficher la valeur, pourquoi ne pas mettre en dur le nom dans le titre ?
Ce dernier ne changera pas, et si il change il faudra dans tous les cas éditer cette vue.

Please Log in or Create an account to join the conversation.

  • Posts: 101
  • Thank you received: 4
11 years 5 months ago #103810

euh... désolé je suis pas sure d'avoir compris.

J'ai un champs personnalisé avec une liste déroulante;
valeur -> titre
vin_rose -> Vin Rose
vin_rouge -> Vin Rouge

Dans mon listing j'arrive à afficher la valeur (donc vin_rose) mais je voudrais le titre (Vin Rose).

Je sais que je pourrais mettre comme valeur "Vin Rose" mais j'utilise les valeurs dans les paramètres des URLs, du coup c'est pas très propre :/

Please Log in or Create an account to join the conversation.

  • Posts: 26151
  • Thank you received: 4027
  • MODERATOR
11 years 5 months ago #103831

Bonjour,

Le champs personnalisé sauvegarde la valeur dans la base, c'est donc cette valeur qui peut être lu.
Afin d'afficher le titre, il faut au préalable charger la configuration des champs personnalisés, pour récupérer la liste de correspondance "valeur <=> titre" et ainsi afficher le titre de la valeur en base.

C'est ce qui est fait dans la vue "product | show_block_custom_main". La vue parcours tous les champs personnalisés et les affiches via la fonction

echo $this->fieldsClass->show($oneExtraField,$value);
Mais pour cela, il lui faut l'objet $oneExtraField qui contient la configuration de votre champs personnalisé.

Dans le listing des produits, la class field est chargée également mais les custom field ne sont chargés que si le listing n'est pas affiché en module.
Si l'affichage est fait dans un module, il faudra donc les charger.

Ensuite dans votre listing, vous pouvez utiliser le code de la vue "product | show_block_custom_main" afin de faire le parcours des champs personnalisés et n'afficher que les champs qui vous intéresse en fonction de leur $fieldName.

Cordialement,


Jerome - Obsidev.com
HikaMarket & HikaSerial developer / HikaShop core dev team.

Also helping the HikaShop support team when having some time or couldn't sleep.
By the way, do not send me private message, use the "contact us" form instead.

Please Log in or Create an account to join the conversation.

  • Posts: 101
  • Thank you received: 4
11 years 5 months ago #104098

ok c'est un peu plus clair.

Mais du coup comment charger la config des champs perso ? Parce que là même mon listing n'est pas dans un module le titre du champs n'est pas récupéré.

Last edit: 11 years 5 months ago by kiweerouge.

Please Log in or Create an account to join the conversation.

  • Posts: 82727
  • Thank you received: 13343
  • MODERATOR
11 years 5 months ago #104121

Vous pouvez charger les fields pour un produit comme ceci:

$itemFields = $this->fieldsClass->getFields('frontcomp',$this->row,'product','checkout&task=state');
Et pour l'affichage:
foreach($itemFields as $fieldName => $oneExtraField) {
	if(!isset($this->row->$fieldName)) continue;
	echo $this->fieldsClass->show($oneExtraField,trim($this->row->$fieldName));
}

Please Log in or Create an account to join the conversation.

  • Posts: 101
  • Thank you received: 4
11 years 5 months ago #105772

Bon finalement j'ai eu un peu de mal avec ce code, alors comme de toute manière je doit de base modifier quelque chose dans le code lorsque j'ajoute une nouvelle valeur à ce champs personnalisé, j'ai fait un tableau avec valeur / titre, et j'affiche le bon titre en fonction de la valeur.

Pas forcément optimale comme méthode mais ça fonctionne.

Merci !

Please Log in or Create an account to join the conversation.

Time to create page: 0.076 seconds
Powered by Kunena Forum