Problème variantes

  • Posts: 472
  • Thank you received: 18
  • Hikashop Business
3 weeks 5 days ago #364683

-- HikaShop version -- : 5.1.1
-- Joomla version -- : 5.2.1
-- PHP version -- : 8.3.13

Bonjour,
J'ai quelques soucis avec le multilingue et les variantes.

Popup de la liste des souhaits

Dans la liste des souhaits, les variantes ne sont pas traduites au niveau du popup, elles restent en italien pour n'importe quelle langue (dans mon cas le français et l'anglais), pourtant elles ont été traduites dans la section des variantes...

Autre problème, toujours dans le même popup, la phrase "with a quantity of 1" n'est pas traduite en italien, elle l'est pour les autres langues.
Je pensais trouver une traduction dans les substitutions de traduction de Joomla, mais je ne trouve rien...

This message contains confidential information


Description du produit

Toujours dans les variantes, étrangement seul le prix change en fonction de la variante, poids et volume restent inchangés dans la description du produit, seul le poids et volume d'une variante est pris en considération, en d'autres paroles poids et volume sont identiques pour les deux variantes.

This message contains confidential information


Merci
Lorenzo

Last edit: 3 weeks 5 days ago by kilou.

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

  • Posts: 83022
  • Thank you received: 13403
  • MODERATOR
3 weeks 4 days ago #364687

Bonjour,

1.a En effet, le nom de la variante n'est pas traduit dans cette popup. Bien vu.
Editez le fichier components/com_hikashop/views/cart/tmpl/product_edit.php via FTP et changez la ligne:

$optionValue = ($characteristic->characteristic_display_method != 'radio' && !empty($clean) ? $clean : $val);
en:
$optionValue = ($characteristic->characteristic_display_method != 'radio' && !empty($clean) ? $clean : hikashop_translate($val));
et cela corrigera le problème. Nous allons rajouter la modification de notre coté également.

1.b Le "with a quantity of" n'est en effet pas traduit dans le fichier de langue italien d'HikaShop car personne n'a pour l'instant fourni la traduction. La clé de traduction est WITH_A_QUANTITY_OF_X

2. Je vois bien le problème dans votre vidéo. Cependant, il n'y a pas de système de tags {weight}, etc pour la description des produits dans HikaShop. C'est quelque chose qui doit être géré par un plugin ou un override de vue de votre coté, j'imagine. Et surement que la façon dont ça a été implémenté ne prend pas en compte les variantes.
Donc je ne pourrais vous répondre, car je ne sais pas comment cela est codé. Il faut voir avec la personne qui a implémenter cela.

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

  • Posts: 472
  • Thank you received: 18
  • Hikashop Business
3 weeks 3 days ago #364719

Bonjour,

1. ... après avoir édité le code, la variante reste toujours en une seule langue, l'italien... :dry:

2. Vous m'aviez donné du code à rajouter: www.hikashop.com/forum/5-support-en-fran...-produit.html#360345

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

  • Posts: 83022
  • Thank you received: 13403
  • MODERATOR
3 weeks 3 days ago #364720

Bonjour,

1. C'est surement un problème de cache de votre navigateur. Essayez avec un autre navigateur.

2. Ce code, c'est un code qui fonctionne pour les produits sans variantes.
Pour les produits avec variantes, il faut faire une modification similaire dans product / show, là où la description de chaque variante est affichée.

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

  • Posts: 472
  • Thank you received: 18
  • Hikashop Business
3 weeks 3 days ago #364725

Bonjour,

1. Rien à faire, j'ai vidé les caches et essayé sur différents navigateurs, les variantes ne sont pas traduites

2. Si vous pouvez m’en dire un peu plus parce que j’ai essayé de placer le code par logique (mais surtout par intuition) à différents endroits dans la vue product / show , mais je n’arrive à rien ...

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

  • Posts: 83022
  • Thank you received: 13403
  • MODERATOR
3 weeks 2 days ago #364736

Bonjour,

1. Je ne vois pas d'autres raisons. Cela fonctionne chez moi suite à cette modification.
Merci de fournir un accès backend, un accès FTP, un accès frontend avec l'URL d'accès à la liste de souhaits avec le produit avec le problème pour que nous puissions regarder.

2. A différents endroits ? Il n'y a qu'un seul endroit qui affiche la description dans product / show, c'est:

			echo JHTML::_('content.prepare',preg_replace('#<hr *id="system-readmore" */>#i','',$variant->product_description));
Donc c'est autour de ce code qu'il faut travailler, comme pour show_default.
Et donc, si vous comparez cette ligne à celle de l'autre sujet ( www.hikashop.com/forum/5-support-en-fran...-produit.html#360345 ), la différence c'est que vous avez $variant au lieu de $this->element.
Et donc, au lieu de
$this->element->product_description = str_replace('{weight}', rtrim(rtrim($this->element->product_weight,'0'),',.').' '.JText::_($this->element->product_weight_unit), $this->element->product_description);
c'est:
$variant->product_description = str_replace('{weight}', rtrim(rtrim($variant->product_weight,'0'),',.').' '.JText::_($variant->product_weight_unit), $variant->product_description);
qu'il faudrait ajouter avant le code qui affiche la description.

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

  • Posts: 472
  • Thank you received: 18
  • Hikashop Business
3 weeks 2 days ago #364742

Bonjour,
apparemment je n'ai pas beaucoup de chance avec les variantes, j'ai des soucis un peu partout...

1. J'ai encore vérifié et tout semble correct d'après les indications que vous m'avez donné.

2. Ici aussi je tourne en rond depuis hier.
J'ai placé le code aux alentours de la ligne 276 mais rien ne change.

<?php
		$variant->product_description = str_replace('{weight}', rtrim(rtrim($variant->product_weight,'0'),',.').' '.JText::_($variant->product_weight_unit), $variant->product_description);
		$variant->product_description = str_replace('{length}', rtrim(rtrim($variant->product_length,'0'),',.').' '.JText::_($variant->product_length_unit), $variant->product_description);
		$variant->product_description = str_replace('{width}', rtrim(rtrim($variant->product_width,'0'),',.').' '.JText::_($variant->product_width_unit), $variant->product_description);
		$variant->product_description = str_replace('{height}', rtrim(rtrim($variant->product_height,'0'),',.').' '.JText::_($variant->product_height_unit), $variant->product_description);

		if(!empty($variant->product_description)) {
?>
		<div id="hikashop_product_description_<?php echo $variant_name; ?>" style="display:none;"><?php
			echo JHTML::_('content.prepare',preg_replace('#<hr *id="system-readmore" */>#i','',$variant->product_description));
		?></div>


3. Je viens de m'apercevoir d'un autre souci toujours pour les variantes.
Le carousel d'image que j'ai réussi à intégrer ( post carousel d'image ) ne s'affiche plus correctement dès que je passe d'une variante à l'autre.
Je suppose qu'ici aussi il faut adapter le code à ce type d'affichage, si vous pouviez m'aiguiller à ce sujet.

This message contains confidential information


Je vous envoie les accès via votre module de contact. Encore merci.

Last edit: 3 weeks 2 days ago by kilou.

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

  • Posts: 83022
  • Thank you received: 13403
  • MODERATOR
3 weeks 2 days ago #364745

Bonsoir,

Merci pour les accès.

1. La modification fonctionne. Mais vous avez un override de vue de cart / product_edit pour votre template qui override le fichier de vue par défaut. Il faut donc faire la modification dans l'override de vue.

2. J'avais oublié le fonctionnement du mécanisme de remplissage des variantes. Pour améliorer les performances, le système ne remplit la description des variantes avec celle du produit principal que si au moins une variante a une description non vide.
Or, dans votre cas, les deux variantes ont une description vide. Dans ce cas, la description des variantes reste vide.
Pour éviter cela, il suffit de changer la première ligne de votre code pour utiliser $this->element->main->product_description au lieu de $variant->product_description.

3. Sur la page produit, lorsque vous sélectionnez une autre variante, le système va copier l'HTML caché de la variante ( qui est généré dans product / show ), vers la zone principale ( qui est définie dans product / show_default ).
Donc ce que vous voyez dans votre navigateur ensuite, c'est le rendu d'un nouvel HTML, qui est une copie de l'HTML caché de la variante.
Or, votre javascript d'initialisation de swiper n'est déclenché que lors de l'affichage de la page sur l'HTML caché de la variante, et pas sur la copie en place suite au changement de variante.
Ce que vous voulez faire, c'est que dans votre javascript, il faut vous enregistrer sur l'évènement hkContentChanged ( qui est appelé après que l'HTML ait été copié ), pour déclencher une nouvelle initialisation de swiper.
www.hikashop.com/support/documentation/6...ocumentation.html#js

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

  • Posts: 472
  • Thank you received: 18
  • Hikashop Business
3 weeks 2 days ago #364752

Bonjour,
Je n'aurais jamais cru avoir autant de soucis avec les variantes :(

1. Je pensais que les overrides de vue qu'on édite dans Hikashop allaient directement se placer à cet endroit: templates/mon_template/html/com_hikashop/cart/product_edit.php. Apparemment ce n'est pas le cas?
En effet si je commente ce fichier, par exemple en mettant l'underscore au nom du fichier, la modification du code qui est déjà en place dans Hikashop prend le dessus et les variantes sont traduites.
Dois-je comprendre qu'un autre fichier product_edit.php est créé ailleurs? Pourtant le code est identique des deux côtés...

2. Si vous pouviez être un peu plus précis parce que j'ai effectué le changement, mais encore une fois je n'arrive à rien, ou plutôt le seul résultat que j'ai, et qui n'arrange rien, est celui que je propose ici:

$variant->product_description = str_replace('{weight}', rtrim(rtrim($variant->product_weight,'0'),',.').' '.JText::_($variant->product_weight_unit), $this->element->main->product_description);
		$variant->product_description = str_replace('{length}', rtrim(rtrim($variant->product_length,'0'),',.').' '.JText::_($variant->product_length_unit), $this->element->main->product_description);
		$variant->product_description = str_replace('{width}', rtrim(rtrim($variant->product_width,'0'),',.').' '.JText::_($variant->product_width_unit), $this->element->main->product_description);
		$variant->product_description = str_replace('{height}', rtrim(rtrim($variant->product_height,'0'),',.').' '.JText::_($variant->product_height_unit), $this->element->main->product_description);

... et qui passe à ce type d'affichage. Plus d'unité de mesure et seul la hauteur est indiquée.



J'ai essayé de remplacer ailleurs dans le code $variant->product_description par $this->element->main->product_description mais dans ce cas rien ne change.

3. J'ai essayé de m'y frotter, mais c'est hors de mes compétences. Si je dois payer un supplément pour coder le script et afficher correctement le carousel dans les variantes faites-le moi savoir.

Merci.

Attachments:

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

  • Posts: 472
  • Thank you received: 18
  • Hikashop Business
3 weeks 2 days ago #364756

...
3. ... finalmement j'ai réussi à afficher le carousel avec la variante correctement, par contre pas sûr que le code soit "très propre", il y a sûrement moyen d'éviter de dupliquer la fonction à deux reprises

document.addEventListener("DOMContentLoaded", function() {
	const swiper = new Swiper('.swiper', {
		effect: "slide",
		direction: 'horizontal',
		loop: true,
		slidesPerView: 4,
		spaceBetween: 6,
		navigation: {
			nextEl: ".swiper-button-next",
			prevEl: ".swiper-button-prev",
			
		},
		
	});
});
if (window.Oby) {
	window.Oby.registerAjax(["hkContentChanged"], function() {
		const swiper = new Swiper('.swiper', {
			effect: "slide",
			direction: 'horizontal',
			loop: true,
			slidesPerView: 4,
			spaceBetween: 6,
			navigation: {
				nextEl: ".swiper-button-next",
				prevEl: ".swiper-button-prev",
				
			},
			
		});
	});
}

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

  • Posts: 83022
  • Thank you received: 13403
  • MODERATOR
3 weeks 1 day ago #364754

Bonjour,

1. Vous avez bien compris comment les overrides fonctionnent. J'ai fait la modification dans l'override avec l'accès FTP pour vérifier que c'était bien là le souci, c'est pour cela que vous ne voyez pas de différence actuellement entre l'override et le fichier original.

2. Vous êtes passé un peu vite sur ce que j'ai dit :)
J'ai dit

il suffit de changer la première ligne de votre code pour utiliser $this->element->main->product_description au lieu de $variant->product_description

Donc, le code d'avant est quasiment bon, c'est uniquement sur la première ligne que vous voulez faire le changement:
		$variant->product_description = str_replace('{weight}', rtrim(rtrim($variant->product_weight,'0'),',.').' '.JText::_($variant->product_weight_unit), $this->element->main->product_description);
		$variant->product_description = str_replace('{length}', rtrim(rtrim($variant->product_length,'0'),',.').' '.JText::_($variant->product_length_unit), $variant->product_description);
		$variant->product_description = str_replace('{width}', rtrim(rtrim($variant->product_width,'0'),',.').' '.JText::_($variant->product_width_unit), $variant->product_description);
		$variant->product_description = str_replace('{height}', rtrim(rtrim($variant->product_height,'0'),',.').' '.JText::_($variant->product_height_unit), $variant->product_description);

3. Oui, c'est pas mal. Idéalement, il serait plus propre de mettre le code d'initialisation dans une fonction :
developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Functions
Ainsi, vous n'auriez qu'a appeler la fonction au chargement et au changement de variante.

Last edit: 3 weeks 2 days ago by nicolas.

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

  • Posts: 472
  • Thank you received: 18
  • Hikashop Business
3 weeks 14 hours ago #364760

Bonjour,
...tout est ok à l'exception d'un détail au point 2, j'ai perdu l'unité de mesure, les chiffres s'affichent correctement au passage d'une variante à l'autre, mais sans l'unité de mesure... :dry:

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

  • Posts: 83022
  • Thank you received: 13403
  • MODERATOR
2 weeks 6 days ago #364761

Bonjour,

Ah oui, j'avais zappé cela dans votre code mais il n'y a pas de variable product_length_unit ou product_width_unit ou product_height_unit dans HikaShop. Les trois dimensions utilisent la même variable product_dimension_unit

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

  • Posts: 472
  • Thank you received: 18
  • Hikashop Business
2 weeks 6 days ago #364763

Bonjour,
...donc la variable product_dimension_unit doit-être ajouté dans le code et si oui à quel niveau? Merci.

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

  • Posts: 83022
  • Thank you received: 13403
  • MODERATOR
2 weeks 6 days ago #364764

Non. Dans votre code, vous utilisez déjà product_length_unit, product_width_unit et product_height_unit
Or, ça n'existe pas. C'est product_dimension_unit qu'il faut mettre à la place.
Donc rien à ajouter. Il faut changer.

The following user(s) said Thank You: kilou

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

  • Posts: 472
  • Thank you received: 18
  • Hikashop Business
2 weeks 5 days ago #364807

Bonjour,

j’ai remarqué un autre problème au niveau des variantes et de la liste des souhaits.
Au moment de changer la variante, le prix n’est pas mis à jour dynamiquement dans la liste des souhaits et si je veux à nouveau re-sélectionner l’autre variante, la fenêtre popup n’affiche plus le produit mais un message d'Hikashop.

Pour illuster le problème:

This message contains confidential information

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

  • Posts: 83022
  • Thank you received: 13403
  • MODERATOR
2 weeks 5 days ago #364824

Bonjour,

En effet. Merci pour ce retour. J'ai fait un patch qui corrige le souci. Téléchargez à nouveau le paquet d'installation d'HikaShop 5.1.2 sur notre site et installez-le sur le votre pour obtenir le patch.

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

  • Posts: 472
  • Thank you received: 18
  • Hikashop Business
2 weeks 5 days ago #364832

Bonjour,
...hélas je n'ai aucun changement, pourtant j'ai essayé différents navigateurs et vidé les caches...

Last edit: 2 weeks 5 days ago by kilou.

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

  • Posts: 83022
  • Thank you received: 13403
  • MODERATOR
2 weeks 4 days ago #364836

Bonjour,

Le patch a été fait dans le fichier cart / show d'HikaShop. Si vous avez déjà un override de cette vue, alors vous ne verrez aucun changement, en effet. Il faudra alors comparer l'original et l'override pour porter le patch de l'un à l'autre, ou supprimer l'override si vous n'avez pas besoin des modifications faites dans celui-ci.

The following user(s) said Thank You: kilou

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

Time to create page: 0.102 seconds
Powered by Kunena Forum