Agrupación de Imágenes de Variantes de Productos Shopify

1, en el fondo de código, en los fragmentos dentro de encontrar product-media.liquid

Añade el código:

{% if current_variant_color == media.alt or media.alt == 'all' %}
datos emparejados
{% endif %}

2, en activos para encontrar global.js

Añade el código:

updateMediaBasedOnVariant() {

    const mediaGallery = document.getElementById(

      `MediaGallery-${this.dataset.section}`

    );

    const options = this.currentVariant.options.map((option) =>

      option.toLowerCase()

    );

    const mediaWrapper = Array.from(

      mediaGallery.querySelectorAll(".product__media-item")

    );

    const mediaThumbnailWrapper = mediaGallery.querySelectorAll(

      ".thumbnail-list__item"

    );

    const mediaModal = document.querySelectorAll(

      ".product-media-modal__content img"

    );

    // Establecer la visualización de miniaturas por defecto

    mediaThumbnailWrapper.forEach((media) => {

      media.removeAttribute('data-matched');

    });

    // Establecer la visualización modal de medios por defecto

    mediaModal.forEach((media) => {

      media.removeAttribute('data-matched');

    });

    const matchesMedia = mediaWrapper.filter((media) => {

      media.removeAttribute('data-matched');

      const alt = media.getAttribute("data-media-alt");

      const isMatch = alt === "all" | this.currentVariant.options[0] === alt;

      if (isMatch) {

        const mediaId = media.getAttribute("data-media-id");

        const id = mediaId.split("-").pop();

        media.setAttribute("data-matched", true); media.setAttribute("data-matched", true); Media.

        const thumbnail = mediaGallery.querySelector(

          `[data-target="${mediaId}"]`

        );

        miniatura && (thumbnail.style.display = "block");

        thumbnail && thumbnail.setAttribute("data-matched", true);

        const modal = document.querySelector(

          `.product-media-modal__content img[data-media-id="${id}"]`

        );

        modal && (modal.setAttribute("data-matched", true));;

      }

      return isMatch.

    });

    customElements.whenDefined("media-gallery").then(() => {

      mediaGallery.setActiveMedia(

        matchesMedia[0].getAttribute("data-media-id"),

        verdadero

      );

    });

    // Restablecer el control deslizante

    customElements.whenDefined("slider-component").then(() => {

      const sliders = mediaGallery.querySelectorAll("slider-component");

      sliders.forEach((slider) => {

        slider.resetPages();

      });

    });

  }

3, en activos dentro de encontrar section-main-product.css

Código 1.

.product-thumbnail_slider .product__media-item:not([data-matched]) {
display: none !important;
}

Código 2.

.thumbnail-list.slider-tablet-up .thumbnail-list__item.slider__slide:not([data-matched]) {
display: none !important;
}

.product-media-modal__content>img:not([data-matched]) {
display: none !important;
}