- Posts: 230
- Thank you received: 15
Afficher un champ spécifique
- houba_houbi
-
Topic Author
- Offline
Less
More
7 years 3 months ago #307911
by houba_houbi
Afficher un champ spécifique was created by houba_houbi
-- HikaShop version -- : 4.1.0
-- Joomla version -- : 3.9.6
Bonjour
J'aimerai afficher sur ma fiche produit des informations à mettre en avant en dessous de la description courte, comme "Exceptionnel rapport qualité/prix", "Réglages et anti retour sécurité", "grand confort"...
Je pensais à un champs personnalisé via un choix multiple à faire depuis la fiche produit ? est-ce bien cela ?
Si oui est-il possible d'afficher un champs spécifique à un endroit précis (pas à l'emplacement habituel de toute la liste des champs personnalisés) ?
Merci
PS : j'ai rajouté à la fin de l'url l'id et pass identique du htaccess (je ne sais pas où l'indiquer de manière privé)
-- Joomla version -- : 3.9.6
Bonjour
J'aimerai afficher sur ma fiche produit des informations à mettre en avant en dessous de la description courte, comme "Exceptionnel rapport qualité/prix", "Réglages et anti retour sécurité", "grand confort"...
Je pensais à un champs personnalisé via un choix multiple à faire depuis la fiche produit ? est-ce bien cela ?
Si oui est-il possible d'afficher un champs spécifique à un endroit précis (pas à l'emplacement habituel de toute la liste des champs personnalisés) ?
Merci
PS : j'ai rajouté à la fin de l'url l'id et pass identique du htaccess (je ne sais pas où l'indiquer de manière privé)
Please Log in or Create an account to join the conversation.
7 years 3 months ago #307956
by nicolas
Replied by nicolas on topic Afficher un champ spécifique
Bonjour,
Oui, des champs personnalisés de la table "produit" me semble aussi être la solution pour faire cela.
Si vous voulez afficher des champs produits à différents endroits de la page produit, c'est possible mais cela demande de rajouter un peu de code dans la vue concernée:
www.hikashop.com/forum/product-category-...on-product-page.html
Notez aussi l'option "Display view files" de la configuration HikaShop pour facilement trouver quel fichier de vue vous voulez modifier:
www.hikashop.com/support/documentation/1...-display.html#layout
Oui, des champs personnalisés de la table "produit" me semble aussi être la solution pour faire cela.
Si vous voulez afficher des champs produits à différents endroits de la page produit, c'est possible mais cela demande de rajouter un peu de code dans la vue concernée:
www.hikashop.com/forum/product-category-...on-product-page.html
Notez aussi l'option "Display view files" de la configuration HikaShop pour facilement trouver quel fichier de vue vous voulez modifier:
www.hikashop.com/support/documentation/1...-display.html#layout
Please Log in or Create an account to join the conversation.
- houba_houbi
-
Topic Author
- Offline
Less
More
- Posts: 230
- Thank you received: 15
7 years 3 months ago #308355
by houba_houbi
Replied by houba_houbi on topic Afficher un champ spécifique
ok merci, ça fonctionne j'ai créé un champ avec choix multiple.
1/ est-il possible d'avoir sur la fiche produit un bloc avec uniquement le ou les champs perso souhaité(s) à un emplacement voulu et afficher tous les champs perso du "block_custom_main" excepté ce ou ces champs souhaités en bas de page ?
2/ pour mon champ perso à choix multiple, j'aimerai que les différentes valeurs de ma liste s'affichent dans une liste ul > li mais je ne sais pas comment faire ?
1/ est-il possible d'avoir sur la fiche produit un bloc avec uniquement le ou les champs perso souhaité(s) à un emplacement voulu et afficher tous les champs perso du "block_custom_main" excepté ce ou ces champs souhaités en bas de page ?
2/ pour mon champ perso à choix multiple, j'aimerai que les différentes valeurs de ma liste s'affichent dans une liste ul > li mais je ne sais pas comment faire ?
Please Log in or Create an account to join the conversation.
7 years 3 months ago #308359
by nicolas
Replied by nicolas on topic Afficher un champ spécifique
Bonjour,
1. Oui. Désactivez l'affichage du champs sur la page produit et ensuite rajoutez ce code là ou vous voulez afficher le champs:
<?php echo $this->element->XXX; ?>
où XXX est le nom de colonne de votre champs.
2. Cela va demander de la modification plus en profondeur.
Le plus simple, c'est de changer la ligne:
return implode(', ',$results);
dans le code:
du fichier administrator/components/com_hikashop/classes/field.php par ceci:
return '<ul><li>'.implode('</li><li>', $results).'</li></ul>';
En faisant comme cela, la modification est simple mais vous la perdrez à chaque mise à jour.
Pour faire quelque chose via un override de vue, cela dedans de désactiver l'affichage du champs pour le faire avec votre propre code, et cela complique la tâche. Il va falloir demander à un développeur PHP de vous aider.
1. Oui. Désactivez l'affichage du champs sur la page produit et ensuite rajoutez ce code là ou vous voulez afficher le champs:
<?php echo $this->element->XXX; ?>
où XXX est le nom de colonne de votre champs.
2. Cela va demander de la modification plus en profondeur.
Le plus simple, c'est de changer la ligne:
return implode(', ',$results);
dans le code:
Code:
class hikashopFieldCheckbox extends hikashopFieldRadioCheck {
var $radioType = 'checkbox';
function display($field, $value, $map, $inside, $options = '', $test = false, $allFields = null, $allValues = null){
if(!is_array($value)){
$value = explode(',',$value);
}
return parent::display($field,$value,$map,$inside,$options,$test,$allFields,$allValues);
}
function show(&$field,$value){
if(!is_array($value)){
$value = explode(',',$value);
}
if(!empty($field->field_value) && !is_array($field->field_value)){
$field->field_value = $this->parent->explodeValues($field->field_value);
}
$results = array();
foreach($value as $val){
if(isset($field->field_value[$val]))
$val = $field->field_value[$val]->value;
$results[] = parent::show($field,$val);
}
return implode(', ',$results);
}
}
return '<ul><li>'.implode('</li><li>', $results).'</li></ul>';
En faisant comme cela, la modification est simple mais vous la perdrez à chaque mise à jour.
Pour faire quelque chose via un override de vue, cela dedans de désactiver l'affichage du champs pour le faire avec votre propre code, et cela complique la tâche. Il va falloir demander à un développeur PHP de vous aider.
Please Log in or Create an account to join the conversation.
- houba_houbi
-
Topic Author
- Offline
Less
More
- Posts: 230
- Thank you received: 15
7 years 2 months ago #308454
by houba_houbi
Replied by houba_houbi on topic Afficher un champ spécifique
Bonjour
Merci pour votre réponse.
C'est dommage qu'un champs de type "liste" ne soit pas affiché par défaut sous forme de liste en html? Ainsi on peut aisément en css l'afficher en ligne ou block.
Merci pour votre réponse.
C'est dommage qu'un champs de type "liste" ne soit pas affiché par défaut sous forme de liste en html? Ainsi on peut aisément en css l'afficher en ligne ou block.
Please Log in or Create an account to join the conversation.
7 years 2 months ago #308456
by nicolas
Replied by nicolas on topic Afficher un champ spécifique
Bonjour,
C'est en effet une bonne idée. En fait, personne n'avait mentionné cela jusqu'à maintenant (de ce que j'en sais du moins). Nous allons voir pour ajouter cela dans le future.
C'est en effet une bonne idée. En fait, personne n'avait mentionné cela jusqu'à maintenant (de ce que j'en sais du moins). Nous allons voir pour ajouter cela dans le future.
Please Log in or Create an account to join the conversation.
- houba_houbi
-
Topic Author
- Offline
Less
More
- Posts: 230
- Thank you received: 15
7 years 2 months ago - 7 years 2 months ago #308566
by houba_houbi
Replied by houba_houbi on topic Afficher un champ spécifique
COOL Merci !
Juste une petit chose le code fonctionne bien si c'est l'affichage complet de tous les champs.
Mais pas quand je n'affiche qu'un seul champ.
J'ai fait la modif du fichier classes field.php comme indiqué et mis ce code sur la page produit :
<?php
if($this->element->product_plus !=null){
echo $this->element->product_plus;}
?>
Voir exemple ici (id et mot de passe indiqué dans l'url privé du topic) : xxx
voir sous le bouton "Nous contacter"
Merci
Juste une petit chose le code fonctionne bien si c'est l'affichage complet de tous les champs.
Mais pas quand je n'affiche qu'un seul champ.
J'ai fait la modif du fichier classes field.php comme indiqué et mis ce code sur la page produit :
<?php
if($this->element->product_plus !=null){
echo $this->element->product_plus;}
?>
Voir exemple ici (id et mot de passe indiqué dans l'url privé du topic) : xxx
voir sous le bouton "Nous contacter"
Merci
Last edit: 7 years 2 months ago by houba_houbi.
Please Log in or Create an account to join the conversation.
7 years 2 months ago #308568
by nicolas
Replied by nicolas on topic Afficher un champ spécifique
Bonjour,
Quand vous faites :
echo $this->element->product_plus;
c'est vous qui affichez les données bruts de la base de données. Et dans la base de données, les selections sont séparés par des virgules.
Si si vous voulez des ul/li, c'est à vous de les mettre dans votre code.
Par exemple:
Quand vous faites :
echo $this->element->product_plus;
c'est vous qui affichez les données bruts de la base de données. Et dans la base de données, les selections sont séparés par des virgules.
Si si vous voulez des ul/li, c'est à vous de les mettre dans votre code.
Par exemple:
Code:
echo '<ul><li>'.implode('</li><li>', explode(',', $this->element->product_plus)).'</li></ul>';
Please Log in or Create an account to join the conversation.
- houba_houbi
-
Topic Author
- Offline
Less
More
- Posts: 230
- Thank you received: 15
7 years 2 months ago #308722
by houba_houbi
Replied by houba_houbi on topic Afficher un champ spécifique
ok j'ai compris
Merci beaucoup pour votre aide
Merci beaucoup pour votre aide
Please Log in or Create an account to join the conversation.
Time to create page: 0.204 seconds