- Posts: 140
- Thank you received: 21
Champ personnalisé affiché "undefined" en front-office
- easyconnect83
-
Topic Author
- Offline
Less
More
1 month 3 weeks ago #372985
by easyconnect83
-- HikaShop version -- : 6.5.2
-- Joomla version -- : 5.4.7
-- PHP version -- : 8.5.6
Bonjour,
j'utilise un champ personnalisé de type product nommé description courte qui s'affiche sous le bouton "Contactez-nous ...".
Sur une fiche produit au lieu d'avoir le texte du champ description courte j'ai le terme undefined.
Sur les autres fiches produits je n'ai pas observé ce problème alors que ce même champ est appelé par le même code sur la vue personnalisée "product / show_tabular.php".
Voici le code de la vue personnalisée :
Code peut-être un peu ancien car il date de la version 4.4.4 d'HikaShop.
Je précise que c'est un site qui gère 2 langues.
Vous trouverez les captures d'écran de la configuration du champ, des langues et ce qu'il y a en base de données.
En bas de données il y a bien le contenu du champ description_courte au format HTML.
Qu'en pensez-vous ?
Merci
-- Joomla version -- : 5.4.7
-- PHP version -- : 8.5.6
Bonjour,
j'utilise un champ personnalisé de type product nommé description courte qui s'affiche sous le bouton "Contactez-nous ...".
Sur une fiche produit au lieu d'avoir le texte du champ description courte j'ai le terme undefined.
Sur les autres fiches produits je n'ai pas observé ce problème alors que ce même champ est appelé par le même code sur la vue personnalisée "product / show_tabular.php".
Voici le code de la vue personnalisée :
Code peut-être un peu ancien car il date de la version 4.4.4 d'HikaShop.
Code:
<!-- RIGHT END EXTRA DATA -->
<?php
echo '<span class="des-c">';
if(!empty($this->element->extraData->rightEnd))
echo implode("\r\n",$this->element->extraData->rightEnd);
//echo $this->element->description_courte;
echo ''.hikashop_translate($this->element->description_courte).'';
echo '</span>';
?>
<!-- EO RIGHT END EXTRA DATA -->
Je précise que c'est un site qui gère 2 langues.
Vous trouverez les captures d'écran de la configuration du champ, des langues et ce qu'il y a en base de données.
En bas de données il y a bien le contenu du champ description_courte au format HTML.
Qu'en pensez-vous ?
Merci
Please Log in or Create an account to join the conversation.
1 month 2 weeks ago #373001
by nicolas
Replied by nicolas on topic Champ personnalisé affiché "undefined" en front-office
Bonjour,
Le point commun des fiches concernées est que le produit affichant "undefined" est un produit avec des variantes (celui de votre capture propose une "Taille produit"), alors que les fiches qui fonctionnent sont des produits simples.
C'est ce qui explique la différence. Sur un produit à variantes, la valeur d'un champ personnalisé de type produit, comme votre "description_courte", est portée par le produit principal, et non par la variante affichée. Dans le code elle se trouve donc sous l'objet "main" (par exemple $this->element->main->description_courte) et non directement sous $this->element. Votre vue personnalisée date de la 4.4.4 et lit le champ de la manière simple, qui renvoie une valeur vide sur les produits à variantes ; comme l'affichage passe par un peu de JavaScript, une valeur absente s'affiche littéralement "undefined".
La piste est de lire la valeur du produit principal quand celle de la variante est vide, dans l'esprit de :
Le point commun des fiches concernées est que le produit affichant "undefined" est un produit avec des variantes (celui de votre capture propose une "Taille produit"), alors que les fiches qui fonctionnent sont des produits simples.
C'est ce qui explique la différence. Sur un produit à variantes, la valeur d'un champ personnalisé de type produit, comme votre "description_courte", est portée par le produit principal, et non par la variante affichée. Dans le code elle se trouve donc sous l'objet "main" (par exemple $this->element->main->description_courte) et non directement sous $this->element. Votre vue personnalisée date de la 4.4.4 et lit le champ de la manière simple, qui renvoie une valeur vide sur les produits à variantes ; comme l'affichage passe par un peu de JavaScript, une valeur absente s'affiche littéralement "undefined".
La piste est de lire la valeur du produit principal quand celle de la variante est vide, dans l'esprit de :
Code:
$valeur = !empty($this->element->description_courte) ? $this->element->description_courte : @$this->element->main->description_courte;
The following user(s) said Thank You: easyconnect83
Please Log in or Create an account to join the conversation.
- easyconnect83
-
Topic Author
- Offline
Less
More
- Posts: 140
- Thank you received: 21
1 month 2 weeks ago #373005
by easyconnect83
Replied by easyconnect83 on topic Champ personnalisé affiché "undefined" en front-office
Bonjour,
je comprends bien la logique et effectivement je n'avais pas regardé les variantes d'autant plus qu'il y a une variante par défaut qui se charge sur la fiche produit ...
J'ai enlevé la mention undefined stocké dans le champ du variant et j'ai modifié le code de la vue en conséquence sur vos conseils :
Cela peut servir à quelqu'un d'autre.
Merci
je comprends bien la logique et effectivement je n'avais pas regardé les variantes d'autant plus qu'il y a une variante par défaut qui se charge sur la fiche produit ...
J'ai enlevé la mention undefined stocké dans le champ du variant et j'ai modifié le code de la vue en conséquence sur vos conseils :
Code:
<!-- RIGHT END EXTRA DATA -->
<?php
if(!empty($this->element->extraData->rightEnd))
echo implode("\r\n",$this->element->extraData->rightEnd);
$description_courte = !empty($this->element->description_courte)
? $this->element->description_courte
: @$this->element->main->description_courte;
if(!empty($description_courte)) {
echo '<span class="des-c">'.hikashop_translate($description_courte).'</span>';
}
?>
<!-- EO RIGHT END EXTRA DATA -->
Cela peut servir à quelqu'un d'autre.
Merci
The following user(s) said Thank You: nicolas
Please Log in or Create an account to join the conversation.
Time to create page: 0.240 seconds