- Posts: 499
- Thank you received: 33
[OK] Class spécifique sur le prix le plus élevé ?
J'aurais besoin d'ajouter une class css spécifique sur les prix d'un produit comportant deux ou trois variantes, afin d'en modifier l'aspect du plus élevé au plius faible.
La variante B est la "variante par défaut". Quand il n'y a pas de variante et un seul prix, le prix a la class "hikashop_product_price_0". Quand il y a deux variantes et deux prix, cette variante B a le prix le plus élevé, mais elle reçoit alors la class "hikashop_product_price_1".
Si je cible hikashop_product_price_1, lorsqu'il n'y a qu'un seul prix, ma mise en forme ne fonctionne pas. Elle ne fonctionne que si j'ai 2 prix.
Il faudrait pouvoir disposer d'une condition dans le genre : si un seul prix, ajoute class "prix_1" et si plusieurs prix, ajoute class "prix_1" à partir du second prix seulement
Comment faire ?
Merci de votre aide
Please Log in or Create an account to join the conversation.
par:
Comme ça, vous pourrez faire ainsi:
.hikashop_product_several_prices .hikashop_product_price_1, .hikashop_product_price_0{
//CSS pour prix le plus haut
}
.hikashop_product_several_prices .hikashop_product_price_0{
//CSS pour prix le plus bas
}
Please Log in or Create an account to join the conversation.
Please Log in or Create an account to join the conversation.
J'ai juste un souci :
Je dois mettre en forme de manière différenciée 1er et 2e prix. Jusque là tout va bien. Mais je dois aussi le faire de manière différenciée pour des caractéristiques différentes. J'ai en effet une caractéristique de type "qualité" (2 types de qualité, avec une différence de prix), et une autre de type "prix par lots" (à l'unité ou par lot de 3). Et là, c'est du tout ou rien et je ne vois pas comment"chopper" avec un sélecteur css mes 1er et 2e prix correspondant uniquement à la caractéristique "prix par lot" et qui ont malheureusement la mise en forme "qualité" (j'ai cependant réussi à afficher sur les images un badge spécifique grâce à une catégorie spéciale non publiée).
Mon rêve serait de pouvoir faire précéder chaque prix d'une mention spécifique à chaque variante, par exemple "Lot de 3" ou "x 3", ou encore "Échelle 1/87".
Peut-être que des champs perso pourrait être créés et affichés ensuite devant le prix ?
Ou alors il faudrait pouvoir disposer d'un "préfixe" ou d'un "suffixe" au niveau du prix de chaque produit et variante.
Please Log in or Create an account to join the conversation.
Il suffit ensuite d'éditer le fichier "listing_price" de la vue product et de rajouter au début:
<?php echo $this->row->CUSTOM_FIELD; ?>
en remplaçant CUSTOM_FIELD par le nom du champs personnalisé.
Please Log in or Create an account to join the conversation.
En modifiant mon override de listing_price.php (ligne 95), j'ai fini par réussir à afficher un champ personnalisé, différent pour chaque variante, devant le prix TTC… mais seulement sur la page produit (hikashop_product_right_part hikashop_product_price_main).
Sur les listings de produits (hikashop_products_listing), le champ perso est zappé et seul apparaît le texte " : " qui le sépare du prix qui suit.
En fiche produit j'ai donc : "L'unité : 4 €"
Et dans le listing produits : " : 4 €" avec mon champ perso qui a disparu. Apparaît aussi comme ça dans le module de panier.
Please Log in or Create an account to join the conversation.
Avec l'option hikashop_product_several_prices, je peux ajouter un préfixe à mes prix quand j'ai des variantes, en utilisant les css (:before).
Avec l'extension ReReplacer , je peux trouver dans le code source les lignes qui contiennent un certain montant (prix à l'unité, prix par lot) et les remplacer en modifiant la class css, ce qui me permet de changer le prefixe, là encore avec les css.
C'est la solution actuellement utilisée sur le site.
Mais j'aimerai bien trouver quelque chose de plus direct, avec un champ perso dans la fiche produit et un override.
J'ai obtenu un résultat satisfaisant en fiche produit, mais pas sur les listings de produits.
Merci de votre aide.
Please Log in or Create an account to join the conversation.
Please Log in or Create an account to join the conversation.
Je vais continuer à faire des essais, j'ai dû louper une marche…
Please Log in or Create an account to join the conversation.
<?php
$prefixprix='';
if(!empty($this->row->prices) && count($this->row->prices)>1){
$prefixprix=$this->row->prefixe_prix_lots_3.' : ';
} ?>
et ensuite j'affiche devant le prix TTC avec ça plus loin dans le code :
if($this->params->get('price_with_tax')){
echo $prefixprix;
Ça m'affiche " : " devant chaque ligne de prix de mes variantes dans les listings seulement. Le champs perso ne s'affiche pas. Quel réglage ou quel fichier pourrait contrarier cet affichage ?
Please Log in or Create an account to join the conversation.
Please Log in or Create an account to join the conversation.
Donc dans le listing_price sur le listing des produits, on n'a pas connaissance des infos de la variantes.
Néanmoins, il est possible charger les informations des variantes assez facilement. Il faudra alors ajouter quelque chose comme cela:
$class = hikashop_get('class.product');
$variantData = $class->get($price->price_product_id);
echo $variantData->CUSTOM_FIELD;
avant le code affichant le prix.
Please Log in or Create an account to join the conversation.
Concernant les performances, voici les données :
- environ 300 produits
- 20 % des produits avec 2 à 3 variantes
J'ai lu quelque part sur le forum qu'il y avait une nouvelle option pour améliorer la performance quand on fait usage des variantes. Serait-il judicieux pour moi de l'utiliser ? Comment l'activer ?
Please Log in or Create an account to join the conversation.
C'est surtout pour les personnes avec plusieurs centaines de variantes par produit mais c'est activé par défaut pour les nouvelles installations à partir de la 1.6.0
Please Log in or Create an account to join the conversation.
inséré
entre la ligne 94
if($this->params->get('price_with_tax')){
et la ligne 95
echo $this->currencyHelper->format($price->price_value_with_tax,$price->price_currency_id);
dans un override du fichier listing_price.php /templates/mon_template/html/com_hikashop/product/listing_price.php
"modele_echelle" et "prefixe_prix_lots_3" sont des champs personnalisés de type texte que je renseigne dans mes produits et mes variantes en fonction des cas de figures.
em class="prefix" me permet de contrôler la mise en forme de mes préfixes via une feuille de style css personnalisée.
Ceci est probablement à adapter en fonction de la manière dont sont affichés les prix (config générales, options des menus et modules).
Merci encore à Nicolas pour son aide précieuse !
Please Log in or Create an account to join the conversation.
// insertion du préfixe du prix
if(isset($price->price_product_id)){
$class = hikashop_get('class.product');
$variantData = $class->get($price->price_product_id);
echo '<em class="prefix">';
echo $variantData->modele_echelle;
echo $variantData->prefixe_prix_lots_3;
echo ' ';
echo $variantData->prefixe_pays;
echo ' : ';
echo '</em>';
}
// fin insertion du préfixe du prix
Please Log in or Create an account to join the conversation.