Carrousel d'images dans description du produit

  • Posts: 472
  • Thank you received: 18
  • Hikashop Business
1 month 1 week ago #364393

-- HikaShop version -- : 5.1.1
-- Joomla version -- : 5.2.0
-- PHP version -- : 8.3.9

Bonjour,
j’ai acheté votre plugin Image Popup, c’est très bien pour l’affichage des produits dans la fenêtre popup, par contre je voudrais avoir un carrousel d’images pour les miniatures dans la description du produit.



Est-ce que par hasard Hikashop propose une option ou un plugin supplémentaire pour avoir ce genre d’affichage?

Si cette fonctionnalité n’est pas disponible, je pensais afficher uniquement quelques miniatures dans la description du produit et afficher le reste de la galerie d’images dans la fenêtre popup, mais je ne vois pas comment limiter le nombre d’images dans la description du produit pour afficher le reste dans la fenêtre popup, ni côté préférences d’Hikashop ni côté du plugin j’ai des options pour régler ce genre de situation…

Peut-être que vous avez une astuce à me proposer? Merci!

Lorenzo

Attachments:

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

  • Posts: 83024
  • Thank you received: 13403
  • MODERATOR
1 month 1 week ago #364395

Bonjour,

Je ne suis pas sûr de comprendre ce que vous voulez. Vous voulez des flèches cliquables pour passer d'une image à l'autre ?
Dans ce cas, vous pouvez activer l'option "Thumbnails slider for product page" dans la page de configuration d'HikaShop.

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

  • Posts: 472
  • Thank you received: 18
  • Hikashop Business
1 month 1 week ago #364404

Bonjour,
les flèches de ma capture d’écran indiquent le fait de pouvoir scroller gauche/droite les miniatures, je ne veux pas qu’il y ai des flèches, de toute façon l’option "Thumbnails slider for product page” m’était passé sous le nez, je ne regardais pas au bon endroit, le problème c’est qu’avec cette option activée il y a bien un défilement de l’image principale, mais les miniatures vont à la ligne au lieu de défiler…

Attachments:

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

  • Posts: 83024
  • Thank you received: 13403
  • MODERATOR
1 month 1 week ago #364408

Donc, si je comprends bien, vous voulez avoir plus d'images liées à vos produits, et au lieu d'avoir plusieurs lignes de miniatures pour passer de l'une à l'autre, vous voulez qu'une seule ligne, avec seulement une partie des miniatures affichées, et le reste accessibles avec une pagination en mode carrousel qui pourra défiler manuellement ou automatiquement.
Pour cela, il n'y a ni option ni plugin.
Si vous savez coder un peu en javascript, vous pouvez editer le fichier show_block_img via le menu Affichage>Vues et rajouter du javascript pour passer l'affichage en mode carrousel.
Pour cela, le plus simple sera d'ajouter d'abord le code PHP:

<?php hikashop_loadJslib('swiper'); ?>
Ensuite, vous pouvez rajouter du code javascript pour demander à swiper de transformer le listing des images en carrousel:
swiperjs.com/get-started#initialize-swiper

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

  • Posts: 472
  • Thank you received: 18
  • Hikashop Business
1 month 1 week ago #364419

... la librairie Swiper est déjà chargée par votre plugin?

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

  • Posts: 83024
  • Thank you received: 13403
  • MODERATOR
1 month 1 week ago #364420

Non. Pourquoi le serait-elle ? Vous confondez je pense.

Swiper c'est pour faire des carrousels, c'est le système que nous utilisons dans HikaShop pour les carrousels:
demo.hikashop.com/index.php/en/hikashop/...display-with-effects

Le plugin image popup, c'est pour gérer la popup, et il n'utilise pas Swiper:
www.hikashop.com/marketplace/product/117...pups-by-obsidev.html
Il utilise soit Colorbox, Swipebox ou Fluidbox qui sont des systèmes de gallerie d'image (pour faire des popups), pas des carrousels.

Last edit: 1 month 1 week ago by nicolas.

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

  • Posts: 472
  • Thank you received: 18
  • Hikashop Business
1 month 1 week ago #364426

oui en effet je fais confusion, je pensais que Swipebox était en relation avec Swiper… mais si Swiper est utilisé dans Hikashop pour des carrousels je suppose que la librairie est chargée quelque part?
Si j’ai bien compris le carrousel d’Hikashop est disponible uniquement comme module? Dommage ne pas l’avoir intégré aussi dans la description du produit… je vais voir si j’arrive à l’intégrer, pas sûr… :dry:

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

  • Posts: 83024
  • Thank you received: 13403
  • MODERATOR
1 month 1 week ago #364427

La librairie est en effet chargée quelque part. Dans le fichier product / carousel_swiper.php qui est utilisé pour les carrousels de listings de produits. Et ce fichier utilise justement la ligne de PHP que je vous ai fourni pour charger swiper.
Donc, si vous avez déjà un module de listing de produit en mode carrousel sur la page produit, vous n'avez en effet pas besoin de cette ligne de code PHP. Mais sinon, il la faut, car HikaShop ne charge pas swiper sur chaque page pour rien.
Et même si vous avez déjà un module de listing de produit en mode carrousel sur la page, rajouter cette ligne ne va juste rien faire.

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

  • Posts: 472
  • Thank you received: 18
  • Hikashop Business
1 month 1 week ago #364439

Bonjour,
j'ai sûrement besoin d'un coup de main pour le bon fonctionnement du script.
J'ai donné un coup d'oeil à votre site demo pour essayer d'y voir plus clair, au final swiper est bien chargé la, mais rien ne défile et je n'ai pas d'erreur dans la console du navigateur...

This message contains confidential information


Voici comment j'ai modifié la vue show_block_img.

Pour les miniatures:
<!-- THUMBNAILS -->
  <?php hikashop_loadJslib('swiper'); ?>
	<div id="hikashop_small_image_div<?php echo $variant_name;?>" class="hikashop_small_image_div swiper">
        <div class="swiper-button-prev"></div>

      <div class="swiper-wrapper">
<?php
	if( !empty($this->element->images) && count($this->element->images) > 1) {
		$firstThunb = true;
		$i = 0;
		foreach($this->element->images as $key => $image) {
			$id = null;
			$classname = 'hikashop_child_image';
			$thumbnail_class = 'hikashop_thumbnail_'.$key;
			if($firstThunb) {
				$id = 'hikashop_first_thumbnail'.$variant_name;
				$firstThunb = false;
				$classname .= ' hikashop_child_image_active';
				$thumbnail_class .= ' hikashop_active_thumbnail';
			}
			$thumbnail_class = 'class="'.$thumbnail_class.'"';

			if(!$this->config->get('thumbnail')) {
				$attr = $thumbnail_class.' title="'.$this->escape((string)@$image->file_description).'" onmouseover="return window.localPage.changeImage('
				. 'this, \'hikashop_main_image'.$variant_name.'\', \''.$this->image->uploadFolder_url . $image->file_path.'\', 0, 0, \''.str_replace(array("'", '"'),
				array("\'", '&quot;'),@$image->file_description).'\', \''.str_replace(array("'", '"'),array("\'", '&quot;'),@$image->file_name).'\', '.$key.');"';

				$html = '<img src="' . $this->image->uploadFolder_url . $image->file_path . '" title="'.$this->escape((string)@$image->file_description).'" alt="' . $this->escape((string)@$image->file_name) . '" class="'.$classname.'" />';
				echo '<a href="#" '.$attr.'>'.$html.'</a>';
				continue;
			}
			if($this->image->override) {
				echo $this->image->display($image->file_path, 'hikashop_main_image'.$variant_name, $image->file_name, 'class="hikashop_child_image"','', $width,  $height);
				continue;
			}

			if(empty($this->popup))
				$this->popup = hikashop_get('helper.popup');
			$img = $this->image->getThumbnail(@$image->file_path, array('width' => $width, 'height' => $height), $image_options);
			if(empty($img->success))
				continue;

			$main_image_size = $img->width.', '.$img->height;
			if($img->external && $img->req_width && $img->req_height)
				$main_image_size = $img->req_width.', '.$img->req_height;

			$attr = $thumbnail_class.' title="'.$this->escape((string)@$image->file_description).'" onmouseover="return window.localPage.changeImage('
				. 'this, \'hikashop_main_image'.$variant_name.'\', \''.$img->url.'\', '.$main_image_size.', \''.str_replace(array("'", '"'),
				array("\'", '&quot;'),@$image->file_description).'\', \''.str_replace(array("'", '"'),array("\'", '&quot;'),@$image->file_name).'\', '.$key.');"';
			$html = '<img class="'.$classname.'" title="'.$this->escape((string)@$image->file_description).'" alt="'.$this->escape((string)@$image->file_name).'" src="'.$img->url.'"/>';
			if($this->config->get('add_webp_images', 1) && function_exists('imagewebp') && !empty($img->webpurl)) {
				$html = '
				<picture>
					<source srcset="'.$img->webpurl.'" type="image/webp">
					<source srcset="'.$img->url.'" type="image/'.$img->ext.'">
					'.$html.'
				</picture>
				';
			}
			if(empty($variant_name)) {
				echo $this->popup->image($html, $img->origin_url, $id, $attr, array('gallery' => 'hikashop_main_image'));
			} else {
				echo $this->popup->image($html, $img->origin_url, $id, $attr, array('gallery' => 'hikashop_main_image_VARIANT_NAME'));
			}
		}
	}
?>
        </div>
  <div class="swiper-button-next"></div>
	</div>
<!-- EO THUMBNAILS -->

... et en dernier lieu le script js:
<script type="text/javascript">
  const swiper = new Swiper('.swiper', {

  // Optional parameters
  effect: "slide",
  direction: 'horizontal',
  loop: true,

  // Navigation arrows
  navigation: {
    nextEl: "hikashop_small_image_div .swiper-button-next",
	prevEl: "hikashop_small_image_div .swiper-button-prev"
  },
});
</script>


Je me demande si je n'oublie pas quelques options dans le script?

Merci,
Lorenzo

Last edit: 1 month 1 week ago by kilou.

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

  • Posts: 83024
  • Thank you received: 13403
  • MODERATOR
1 month 1 week ago #364440

Je pense que vous êtes sur la bonne voie. J'ai l'impression que c'est bien initialisé.
Vous avez apparemment ce problème avec les boutons précédent et suivant qui ne s'affiche pas:
stackoverflow.com/questions/69258650/swi...ut-area-is-clickable
Donc essayez de rajouter du CSS pour le text-rendering et cela devrait aider.

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

  • Posts: 472
  • Thank you received: 18
  • Hikashop Business
1 month 1 week ago #364449

tiens, je n’avais pas remarqué le problème des boutons précédent et suivant, mais le souci est présent uniquement sur Chrome et Safari, pas sur Firefox, de toute façon c’est réglé… mais mon problème, comme je disais dans mon précédent message, c’est que le carrousel est fixe, il ne bouge pas… pourtant tout est chargé et je n’ai pas d’erreur dans la console, c’est pour cela que je demandais s’il y a avait d’autres paramètres Swiper à ajouter dans le script.

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

  • Posts: 83024
  • Thank you received: 13403
  • MODERATOR
1 month 1 week ago #364454

Bonjour,

Si vous voulez que le slider déroule tout seul, alors vous voulez utiliser les options d'autoplay de swiper:
codesandbox.io/p/sandbox/kdsdk3?file=%2Findex.html

      autoplay: {
        delay: 2500,
        disableOnInteraction: false,
      },

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

Time to create page: 0.088 seconds
Powered by Kunena Forum