Affichage de prix dans liste 0 € quand qté mini >1

  • Posts: 15
  • Thank you received: 1
11 years 9 months ago #58087

Bonjour,

J'ai mise en place un champ personnalisé comme indiqué dans le post : www.hikashop.com/fr/forum/5-support-en-f...e-prix-unitaire.html

Cela fonctionne, par contre j'ai un problème de prix à l'unité.
Quand je mets dans produit -> prix -> quantité minimum 1, le prix à l'unité (carton de 6) s'affiche correctement, mais si je mets la quantité minimum à 2, alors j'ai un prix affiché de 0€ l'unité. Par contre, si je passe commande tout va bien, il calcule correctement le prix et n'autorise pas de commander qu'un seul carton. Le probleme est donc dans l'affichage du produit dans la liste de la catégorie. Mais ou ?

J'aimerais aussi savoir comment faire pour que Hikashop n'affiche pas 'l'unité' pour les produits en carton de 6 mais plutôt 'le carton de 6'.
Tout mes produits ne sont pas en carton de 6, donc il faut une reconnaissance de la catégorie du produit... il y a quelque chose de prévu pour cela, ou il faut modifier le code ?

Merci pour votre aide.

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

  • Posts: 81662
  • Thank you received: 13092
  • MODERATOR
11 years 9 months ago #58137

Bonjour,

Il faut que vous spécifiez un prix pour une quantité de 1, même si il ne sera pas utilisé pour que cela fonctionne correctement.
Si vous souhaitez ne pas l'afficher, il suffit de rajouter ce CSS:
.hikashop_product_price_for_at_least_1{ display: none; }

Pour votre deuxième question, la question "I sell packed products, how can I change "each" text in the product page ?" de notre FAQ répond exactement à ce besoin:
www.hikashop.com/fr/support/documentation/faq.html#translation

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

  • Posts: 15
  • Thank you received: 1
11 years 9 months ago #58167

MErci pour votre aide !

J'ai mis votre code au CSS, mais en fait il fallait mettre .hikashop_product_price_1 {display: none;}

Cela enlève bien le prix mais laisse "l'unité" affiché. Je suppose qu'il faut modifier la vue, mais ou ?

En lisant le FAQ j'ai bien compris, mais peut-on du coup faire plusieurs type d'emballage et le spécifier par produit ?

JE vais voir tout celà ce soir a mon retour,

Un GRAND merci pour votre réponse :)

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

  • Posts: 81662
  • Thank you received: 13092
  • MODERATOR
11 years 9 months ago #58251

Oui c'est le principe de ce qui est expliqué dans la FAQ. Vous aurez un champs pour entrer le type d'emballage sur chaque produit et avec la modification du code, la valeur qui aura été sélectionnée/entrée pour le produit sera utilisée à la place de l'unité.

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

  • Posts: 15
  • Thank you received: 1
11 years 9 months ago #58369

J'ai porté les modifications du FAQ pour modifier l'affichage unitaire (conditionnement) avec le code :

In the menu Display -> Views, edit the product / listing_price.php file.
In this file, replace:

echo JText;;_('PER_UNIT')

By:
$sale_method = JText::_('PER_UNIT') ;
foreach($this->fields as $fieldName => $oneExtraField) {
if(!empty($this->element->$fieldName)){
if( $this->fieldsClass->show($oneExtraField,$this->element->$fieldName) == 'pack'){
$sale_method = JText::_('PER_PACK');
}
}
}
echo $sale_method;

dans l'affichage listing des produits j'ai l'erreur suivant :

Warning: Invalid argument supplied for foreach() in /home/imagvin/www/templates/imagvin/html/com_hikashop/product/listing_price.php on line 121

Voici la ligne 121 :
    foreach($this->fields as $fieldName => $oneExtraField) {

Que faut-il y modifier ?

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

  • Posts: 15
  • Thank you received: 1
11 years 9 months ago #58390

En me creusant la tête, je me suis aperçu que l'exemple du FAQ utilisait 'pack' et 'PER_PACK', alors que moi non, j'ai utilisé d'autres termes (plusieurs conditionnements...)

Voici mon modif du fichier

    //EDIT VINCENT POUR DIFFERENTS CONDITIONNEMENTS    // echo JText::_('PER_UNIT');
    $sale_method = JText::_('PER_UNIT') ;
    foreach($this->fields as $fieldName => $oneExtraField) {
    if(!empty($this->element->$fieldName)){
    
    // Conditionnement Carton de 6 bouteilles
    if( $this->fieldsClass->show($oneExtraField,$this->element->$fieldName) == 'Carton de 6 bouteilles'){
    $sale_method = JText::_('PER_CARTON_6_BTL');
    
        
    // Conditionnement Bag in box 5L
    if( $this->fieldsClass->show($oneExtraField,$this->element->$fieldName) == 'Bag in box 5L'){
    $sale_method = JText::_('PER_BIB_5L');
    
        
    // Conditionnement Bouteille de 75 cls.
    if( $this->fieldsClass->show($oneExtraField,$this->element->$fieldName) == 'Bouteille de 75 cls.'){
    $sale_method = JText::_('PER_75CL_BTL');
    
        
    // Conditionnement Magnum
    if( $this->fieldsClass->show($oneExtraField,$this->element->$fieldName) == 'Magnum'){
    $sale_method = JText::_('PER_MAGNUM');
    
        
    // Conditionnement Bag in Box 10L
    if( $this->fieldsClass->show($oneExtraField,$this->element->$fieldName) == 'Bag in Box 10L'){
    $sale_method = JText::_('PER_BIB_10L');
    
    
    }
    }
    }
    echo $sale_method;
    //FIN MODIF VINCENT

Du coup, rien ne va plus, message erreur :
Parse error: syntax error, unexpected $end in /home/imagvin/www/templates/imagvin/html/com_hikashop/product/listing_price.php on line 184

Line 184 est la toute derniere ligne... l'erreur c'est surement ma modif.

Il faut des else après les if pour chaque valeur ?
De plus j'utilise des espaces dans le champs $fieldName (dans le FAQ ou il y a 'pack') Ca pose probleme ?
Quel est la syntaxe correcte a utiliser? (Je ne suis pas un crack en PHP!)

Merci pour votre patience !!

Last edit: 11 years 9 months ago by enzo24.

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

  • Posts: 81662
  • Thank you received: 13092
  • MODERATOR
11 years 9 months ago #58430

Vous y etes presque.

En PHP quand vous ouvrez une {, il faut ensuite la fermer avec }.


donc :
if( $this->fieldsClass->show($oneExtraField,$this->element->$fieldName) == 'Magnum'){
$sale_method = JText::_('PER_MAGNUM');

devrait etre:
if( $this->fieldsClass->show($oneExtraField,$this->element->$fieldName) == 'Magnum'){
$sale_method = JText::_('PER_MAGNUM');
}

et pareil pour les autres, sauf pour le dernier qui a déjà son } just avant le } du if(!empty($this->element->$fieldName)){ et le } du foreach($this->fields as $fieldName => $oneExtraField) {

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

  • Posts: 15
  • Thank you received: 1
11 years 9 months ago #58445

AH ! Effectivement !, ça va mieux :)

Maintenant j'ai le message :

Warning: Invalid argument supplied for foreach() in /home/imagvin/www/templates/imagvin/html/com_hikashop/product/listing_price.php on line 122

C'est mieux, au moins je lui parles proprement au PHP, c'est juste qu'il n'est pas d'accord avec ce que je dis !

Voici la ligne en question :

    foreach($this->fields as $fieldName => $oneExtraField) {

Je te remercie réelement pour ta patience.

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

  • Posts: 81662
  • Thank you received: 13092
  • MODERATOR
11 years 9 months ago #58463

Ajoutez voir le code:
$fieldsClass = hikashop_get('class.field');
$this->fields = $fieldsClass->getFields('frontcomp',@$this->row,'product','checkout&task=state');

avant votre code et cela devrait aider

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

  • Posts: 15
  • Thank you received: 1
11 years 9 months ago #58472

Je n'ai plus de message d'erreur, par contre, dans le listing des produits de la catégorie il affiche toujours le prix comme avant :
15€ l'unité
au lieu de 15€ le bag in box de 5L.
:/

Par contre, dans le détail du produit, c'est affiché correctement('15€ le bag in box de 5L')

Je suppose qu'il faut que je fasse la meme chose sur un autre fichier... j'aurais pensé a product/listing_img_title.php, mais il fait bien appel à listing_price via l'appel :

$this->setLayout('listing_price');

Ou est l'erreur ? SI besoin, je vous donne un accès au site.

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

  • Posts: 81662
  • Thank you received: 13092
  • MODERATOR
11 years 9 months ago #58517

Il faut remplacer :
$this->element->$fieldName

par:
$this->row->$fieldName

dans votre code pour que cela fonctionne pour les listings de produits.

The following user(s) said Thank You: enzo24

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

  • Posts: 15
  • Thank you received: 1
11 years 9 months ago #58523

This is PERFECT ! Thank you VERY much :) :)

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

Time to create page: 0.088 seconds
Powered by Kunena Forum