Skip to main content

Titre champs perso dans listing produit

More
13 years 4 months ago #102659 by kiweerouge
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.

More
13 years 4 months ago #102689 by Xavier
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.

More
13 years 4 months ago #103810 by kiweerouge
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.

More
13 years 4 months ago #103831 by Jerome
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
Code:
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.

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

More
13 years 4 months ago - 13 years 4 months ago #104098 by kiweerouge
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: 13 years 4 months ago by kiweerouge.

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

More
13 years 4 months ago #104121 by nicolas
Vous pouvez charger les fields pour un produit comme ceci:
Code:
$itemFields = $this->fieldsClass->getFields('frontcomp',$this->row,'product','checkout&task=state');
Et pour l'affichage:
Code:
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.

More
13 years 4 months ago #105772 by kiweerouge
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.247 seconds
Powered by Kunena Forum